HashMap知识点
- hashmap的默认初始长度是16
- hashmap的数据结构包括 初始数组、链表、红黑数
- 数组容量为2的整数倍:提高运算速度、增加散列度,降低冲突、减少内存碎片
- 插入位置:pos=key%size计算位置
- hash函数与pos定位:hashchode的高16位与低16位进行异或求模,增加散列度,降低冲突
- 插入冲突:通过单链表解决冲突,如果链表过长(TREEIFY_THRESHOLD=8),进行单链表和红黑树的转换以提高查询速度
- 红黑树最小最小容量64
- 新节点插入链表时,使用的是“头插法”(假定后插入的数据被查找的可能性更大)
- 扩容:达到容量的0.75倍时进行X2扩容
- 扩容后数据排布:要么原位置、要么原下标+原容量的位置
- 序列化:只存储数组的容量、实际节点数量和各个节点的key、value值
后续学习的知识点
- 位移运算、取模、高位与
- 红黑树