HashMap源码分析
刚创建好HashMap还没有添加元素的时候
table = null;
size = 0;
添加完第一个元素之后容量大小变为16,目的是节省空间
核心总结
1.刚创建好HashMap还没有添加元素的时候table为null,size = 0;添加进第一个元素放到数组的i位置,此时初始容量为16
3.当每个链表的长度大于8且数组元素个数大于等于64时,链表就转变为红黑树。目的是提高执行效率
4.当链表长度小于6,调整回链表
5.jdk1.8以前链表是头插入:新添加进的元素放进数组的i位置,以前i位置内的元素往外挪
jdk1.8之后是尾插入:新添加的元素依次往后排
HashSet与HashMap的区别
分析上述HashSet源码发现:
HashSet就是用的HashMap,HashSet的add方法用的就是HashMap的key来保存元素