Java集合框架
文章平均质量分 58
总结Java集合框架原理
Whisper~~~
00后 后端开发工程师
展开
-
HashMap底层源码
结论 HashMap底层维护了Node类型的数组table,默认为NULL 当创建对象时,将加载因子初始化为0.75 当添加key-val的时候,通过key的哈希值得到在table的索引,然后判断该索引处是否有元素,如果没有元素直接添加。如果索引处有元素,继续判断该元素的key是否和准备将加入的key相等,如果相等,则直接替换val;如果不相等需要判断是树结构还是链表结构,做出相应处理。如果添加时发现容量不够,则需要扩容。 第一次添加,需要扩容table容量为16,临界值为12 以后再扩容,则需要扩容ta原创 2022-02-26 19:46:43 · 279 阅读 · 0 评论 -
HashSet底层源码
结论 HashSet底层是HashMap 添加一个元素时,先得到hash值,会转成索引值 找到存储数据表table,看这个索引位置是否已经存在的有元素 如果没有,直接加入 如果有,调用equals比较,如果相同,就放弃添加,如果不相同,则添加到最后 在Java8中,如果一条链表的元素个数超过TREEIFY_THRESHOLD(默认是8),并且table的大小大于等于 MIN_TREEIFY_CAPACITY(默认是64),就会转成红黑树。 继承体系 源码解读 1、构造函数,底层使用HashMap pu原创 2022-02-26 19:34:29 · 441 阅读 · 0 评论 -
ArrayList底层源码
ArrayList底层源码 结论 ArrayList中维护了一个Object类型的数组elementData.(transient Object[] elementData;) 当创建ArrayList对象的时候,如果使用的是无参构造器,则初始elementData容量为0,第一次添加,则扩容elementData为10,如果需要再次扩容,则扩容elementData为1.5倍。 如果使用的是指定大小的构造器,则初始化elementData容量为指定大小,如果需要扩容,则直接扩容elementData为1原创 2022-02-26 15:56:01 · 275 阅读 · 0 评论