集合框架底层都是采用哪些结构存储数据的呢?

书欣 Java面经 发布时间:2022-10-26 22:58:21 阅读数:14403 1 集合容器面试题(2023优化版)
下文笔者讲述Java中常见的集合存储类的底层数据存储结构
我们都知道java中数据的存储其底层都是
    数组或链表(树是一种特殊的链表结构)
集合框架按照框架的不同,可分为以下三类,如:
Collection(list,Set),Map

各存储容器的底层存储单位结构说明

List

实现子类底层存储结构
ArrayListObject数组
LinkedList双向循环链表
VectorObject数组

Set

实现子类底层存储结构
HashSet(无序,唯一)基于HashMap实现
底层采用 HashMap 的key来保存元素
LinkedHashSetLinkedHashSet 继承于HashSet
并且其内部是通过 LinkedHashMap 来实现的
TreeSet(有序,唯一)红黑树(自平衡的排序二叉树)

Map

实现子类底层存储结构
HashMapJDK1.8之前HashMap由数组+链表组成的
数组是HashMap的主体
链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)
JDK1.8以后在解决哈希冲突时有了较大的变化
当链表长度大于阈值(默认为8)
但是数组长度小于64时会首先进行扩容
否则会将链表转化为红黑树
以减少搜索时间
LinkedHashMapLinkedHashMap 继承自 HashMap
它的底层仍然是基于拉链式散列结构即由数组和链表或红黑树组成
另外,LinkedHashMap 在上面结构的基础上,
增加了一条双向链表,使得LinkedHashMap可以保持键值对的插入顺序
HashTable数组+链表组成的,数组是 HashTable 的主体,
链表则是主要为了解决哈希冲突而存在的
TreeMap红黑树(自平衡的排序二叉树)
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaMianJing/202210/16667970214725.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者