java的常见数据结构

48 阅读2分钟

java的常见数据结构

数据结构

数据结构是以某种特定的布局方式存储数据的容器。数据结构=逻辑结构+物理结构(顺序、链式、索引、散列)逻辑结构:数据元素间抽象化的相互关系 。物理结构:(存储结构),在计算机存储器中的存储形式

通过逻辑分类

  • 线性结构
    • 数据结构中的元素存在一对一的相互关系,常见线性结构:堆、栈,队列,数组
  • 树形结构
    • 数据结构中的元素存在一对多的相互关系,常见树形结构:二叉树,红黑树,B 树,哈夫曼树等
  • 图形结构
    • 数据结构中的元素存在多对多的相互关系,常见图形结构:有向图,无向图,简单图等

常见的数据结构

哈希表(Hash)

  • 哈希表也叫散列表,是一种可以通过关键码值(Key-Value)直接访问的数据结构,可以实现快速查询、插入、删除
  • HashMap
    • 以数组+链表+红黑树构成
    • 当链表长度大于8时,链表会转换为红黑树

队列(Queue)

  • 队列是一种特殊的线性表,遵循先入先出、后入后出的基本原则,一般来说,它只允许在表的前端进行删除操作,而在表的后端进行插入操作

树(Tree)

  • 树是一种数据结构,它是n(n>=0)个节点的有限集,n = 0时称树为空树,当n > 0时,n个有限集构成一个有层次感的数据结构

堆(Heap)

  • 堆可以被看成一个树的数组对象
    • 堆是一颗完全二叉树
    • 最大堆/大根堆:某个结点的值不大于父结点的值
    • 最小堆/小根堆:某个结点的值不小于父结点的值

栈(Stock)

  • 栈是一个先入后出的有序列表(单向通道),栈允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)

数组(Array)

  • 数组是一种线性表的数据结构,连续的空间存储相同类型的数据
  • 缺点:数组在创建时大小确定,无法扩容。数组只能存储一种类型的数据。添加、删除元素慢
  • 优点:查询速度快

链表(LinkedList)

  • 链表是一种线性表的链式存储方式,链表的内存是不连续的,前一个元素存储地址的下一个地址中存储的不一定是下一个元素。链表通过一个指向下一个元素地址的引用将链表中的元素串起来
  • 例如:单向链表、双向链表、循环链表

图(Graph)

  • 节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关