HashMap
数据结构 - 数组
优点:连续的内存,通过下标可以快速寻址
缺点:插入节点困难
数据结构 - 单链表
优点:插入和删除数据方便
缺点:查询效率低 O(n)
数据结构 - HashMap
hashmap的数据结构包括了初始数组、链表、红黑树
插入数据的时候使用pos=key%size来进行插入数据
当两个或者两个以上的pos相同且key值不同的时候发生冲突,就会挂在数组初始化位置的链表后
当某个节点后出现过多的链表节点的时候,就会转换成红黑树以提高效率
源码总结 - HashMap
hashmap的数据结构包括了初始数组、链表、红黑树
数组容量2的倍数:
1提高运算速度
2增加散列度,降低冲突
3减少内存碎片
hash函数与pos定位:
hashcode的高16位和低16位进行异或求模,增加散列度,减低冲突
插入冲突:通过单链表解决冲突,如果链表长度超过(TREEIFY_THRESHOLD=8),进行单链表和红黑树的转换以提高查询速度
扩容:
扩容条件:实际节点数大于等于容量的四分之三
扩容后数据排布:要么是原下标的位置,要么是原下标+原容量的位置