HashMap哈希算法实现过程

HashMap底层使用entry[]数组加链表来存储数据

初始容量为16

首先调用Key.hashCode()计算哈希值

通过哈希值和entry[]数组长度,计算下标i

将键值对封装成entry对象

将entry对象放入下标i位置

如果是空位置,直接放入

如果有数据,就调用key.equals()方法一个一个比对,相等就覆盖v值,不相等就链表链接在下面.

默认负载率,加载因子0.75

数据量/数组容量到75%,就会新建容量翻倍数组

所有数据,重新计算哈希值,放入新数组

jdk1.8

链表链接到数据大于8,就会转为红黑树

树上的数据减到6,又会转回链表

 

猜你喜欢

转载自blog.csdn.net/lanlangtu/article/details/88584247