Java常用数据结构有哪些?

2 个回答

  • 诺尔莎
    理解一切,没有对错,让花成花,让树成树。
    一、8种数据结构 **1、哈希表(Hash)** 哈希表也叫散列表。 哈希表也叫散列表,也叫Hash表。哈希表也叫散列表。 哈希表也叫散列表也叫散列表,也叫散列表。哈希表也叫散列表。哈希表也叫散列表。 哈希表也叫散列表,也叫Hash表。哈希表在数据查找、存储方面表现优秀,Hash函数能够将任意长度输入转化为定长输出。 Java中经典的HashMap,以数组+链表+红黑树构成。 哈希函数在哈希表中起着关键作用,能够将任意长度的输入转为定长的输出(哈希值)。通过哈希函数,任意长度的输入转为定长的输出(哈希值)。通过哈希函数,能够快速定位存储位置。 当哈希冲突发生时,Java 8中当链表长度大于8,将链表转化为红黑树,以提高检索速度。 **2、队列(Queue)** 类比水管,两端放开,一端入水,一端出水。 队列是一种特殊的线性表,只允许在表的前端进行删除操作,后端进行插入操作。 **3、树(Tree)** 树是一种非线性数据结构。 - **树的基本概念** - 二叉树:每个节点最多只有2个子节点。 - 完全二叉树:叶节点只允许出现在最下两层,且最下一层的叶子节点集中在该层左边若干位置的二叉树。 - 满二叉树: - 国内定义:除最后一层无任何子节点外,每一层上的所有节点都有两个子节点的二叉树。 - 国外定义:如果一棵二叉树的节点要么是叶子节点,要么它有两个子节点,这样的树称为满二叉树。 - 二叉查找树(BST): 1. 任意节点的值大于其左子树所有节点的值。 - 任意节点的值小于右子树所有节点的值。 - 任意节点的左右子树也是二叉查找树。 - 平衡二叉树(AVL树): - 任何节点的两棵子树高度差不超过1的二叉树。 Java培训中HashMap的红黑树,实质上就是平衡二叉树,通过颜色约束二叉树的平衡: - 每个节点都只能是红色或者黑色 - 根节点是黑色 - 每个叶节点(NIL节点,空节点)是黑色 **3、红黑树在Java8 HashMap中的应用:** - 实质上是平衡二叉树,通过颜色约束实现近似平衡: 1. 每个节点都只能是红色或者黑色 2. 根节点是黑色 3. 每个叶节点(NIL节点,空节点)是黑色 **4、堆(Heap)** 堆可以被看成树的数组对象,具有以下特点: - 堆是一棵完全二叉树。 - 最大堆/大根堆:某个节点的值不大于父节点的值。 - 最小堆/小根堆:某个节点的值不小于父节点的值。 **5、数组(Array)** - 数组是连续的存储空间,存储相同类型的数据。 - 优点:查找速度快。 - 缺点:添加、删除元素较慢;数组长度固定,无法存储不同类型的数据。 **6、栈(Stack)**(原文中此处误写为Stock) 栈可以类比为水桶,只有一端能够进出,遵循先进后出规则。 先进的元素进入栈底,读元素从栈顶取出。 **6、链表(Linked List)** 链表是一种动态的数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。 - 单向链表: - 最简单形式,每个节点有数据块和指向下一个节点的指针。 - 双向链表: - 每个节点有两个指针,分别指向前后节点。 - 查找和删除性能较高,但需要更多的存储空间。 - 循环链表: - 链表尾部指向头节点,头节点也指向尾节点,形成闭环,方便循环遍历。 **7、图(Graph)** 图的节点之间的关系是任意的,任意两个数据元素之间都可能存在关系,具有任意连接方式。 图中节点之间任意两个数据元素之间都有可能相关。
    发布于 2025-03-06 19:10 •IP属地 云南
    举报
    评论
    收藏

  • 辛霖
    在漆黑的夜里,你需要一道光照亮夜行的路,我燃烧了我自己,但也造就了你我不能相拥。
    Java常用的数据结构主要包括以下几类: **一、线性结构** 1. **数组(Array)** - 特点:查询速度快(随机访问O(1)),增删慢。 - 实现类:Java基础类型数组、`ArrayList`。 2. **链表(Linked List)** - 特点:插入、删除快(O(1)),随机访问慢(O(n))。 - 实现类:`LinkedList`。 3. **队列(Queue)** - 特点:先进先出(FIFO)。 - 实现类:`LinkedList`、`ArrayDeque`、`PriorityQueue`。 4. **栈(Stack)** - 特点:后进先出(LIFO)。 - 实现类:`Stack`(较旧,不推荐)、`LinkedList`或`ArrayDeque`替代。 **二、集合结构** 1. **集合(Set)** - 特点:元素无序且不重复。 - 实现类: - `HashSet`(无序,基于哈希表) - `LinkedHashSet`(保持插入顺序) - `TreeSet`(有序,基于红黑树) 2. **映射(Map)** - 特点:键值对,键不重复。 - 实现类: - `HashMap`(无序,查找高效) - `LinkedHashMap`(插入顺序或访问顺序) - `TreeMap`(基于红黑树,有序) - `ConcurrentHashMap`(线程安全) **三、树结构** 1. **二叉树(Binary Tree)** - 常见实现:二叉查找树(BST)、红黑树(TreeMap实现)。 2. **堆(Heap)** - 常见实现:优先队列(`PriorityQueue`,小顶堆为主)。 **四、图结构(Graph)** - Java标准库无内置图实现,常用的第三方实现如`JGraphT`。 **五、特殊结构** 1. **位集合(BitSet)** - 特点:高效存储位(bit)信息。 2. **布隆过滤器(Bloom Filter)** - 特点:快速判断元素是否存在(可能误判,不内置,Guava库有实现)。 以上数据结构广泛用于实际开发中,根据具体业务需求选择适合的数据结构。
    发布于 2025-03-06 08:03 •IP属地 云南
    举报
    评论
    收藏