HashMap源码分析

HashMap源码分析

 

 

刚创建好HashMap还没有添加元素的时候

table = null;

size = 0;

添加完第一个元素之后容量大小变为16,目的是节省空间

 

 

 

 

 

 

 

 

 

 

核心总结

1.刚创建好HashMap还没有添加元素的时候table为null,size = 0;添加进第一个元素放到数组的i位置,此时初始容量为16

 

 

 

 2.当数组中元素个数达到数组容量*0.75,就开始扩容,扩容后的容量为原容量的2倍,目的是减少调整元素的个数

 

 

 

 

3.当每个链表的长度大于8且数组元素个数大于等于64时,链表就转变为红黑树。目的是提高执行效率

4.当链表长度小于6,调整回链表

5.jdk1.8以前链表是头插入:新添加进的元素放进数组的i位置,以前i位置内的元素往外挪

jdk1.8之后是尾插入:新添加的元素依次往后排

HashSet与HashMap的区别

 

 

分析上述HashSet源码发现:

HashSet就是用的HashMap,HashSet的add方法用的就是HashMap的key来保存元素

posted @ 2022-04-06 21:50  无关风月7707  阅读(16)  评论(0编辑  收藏  举报