hashmapput流程
时间: 2023-11-28 12:51:31 浏览: 72
总结put处理过程-HashMap源码(上)
HashMap 的 put 方法主要分为以下几个步骤:
1. 计算 key 的 hash 值并确定其在数组中的索引位置。
2. 如果该位置上没有元素,则直接将该键值对插入到该位置。
3. 如果该位置上已经有元素,则需要进行冲突解决,通常使用链表或红黑树来解决冲突。如果该位置上的元素数量小于等于 8 个,则使用链表来存储,否则使用红黑树。
4. 如果该键已经存在,则使用新的值替换旧的值,并返回旧的值。
具体流程如下:
1. 调用 key 的 hashCode() 方法计算出 hash 值。
2. 根据 hash 值计算出在数组中的索引位置。
3. 如果该位置上没有元素,则直接将该键值对插入到该位置。
4. 如果该位置上已经有元素,则需要进行冲突解决。如果该位置上的元素数量小于等于 8 个,则使用链表来存储,否则使用红黑树。
5. 如果该键已经存在,则使用新的值替换旧的值,并返回旧的值。
6. 如果数组中的元素数量超过了负载因子(默认为 0.75),则需要进行扩容。
7. 扩容时会重新计算每个元素的 hash 值和索引位置,并将它们插入到新的数组中。
8. 返回 null 或旧的值,表示插入成功或替换成功。
阅读全文