文图简述
HashMap
中使用的哈希算法
放数据
- key.hasCode() 得到键的哈希值
- 用哈希值,计算一个下标值 index
- 新建 Entry 实例封装键值对数据
- 将 Entry 实例放入数组的 index 位置
4.1. 空位置,直接放入 [如图]
4.2. 不是空位置,依次用 equals() 比较每一个键是否相等
4.2.1. 找到相等的键,覆盖原值
4.2.2. 找不到相等的键,链表连在一起 [如图]
- 检查数组容量是否超过最大负载率,容量翻倍 [如图]
取数据
- key.hasCode() 得到键的哈希值
- 用哈希值,计算一个下标值 index
- 依次用 equals() 比较每一个键是否相等
3.1. 找到相等的键,取出对应的值
3.2. 找不到相等的键,返回 null 值