- 首先判断键值对数组是否还有空间,如果没有空间的话需要进行resize扩容。
- 然后根据key的值计算出key所要插入的位置,如果该位置已经有元素,判断已有元素的key和将要插入的key的hash是否相同,若相同则直接覆盖。
- 若hash不同,首先判断hashMap底层是否位红黑树,如果为红黑树,则直接插入;
- 若不为红黑树,则计算链表的长度,判断长度是否大于8,若大于8,就将链表转为红黑树并进行插入;否则进行链表的插入操作;
- 插入成功后,判断实际存在的键值对数量size是否超多了最大容量threshold,如果超过,进行扩容
HashMap中put()方法流程
最新推荐文章于 2026-06-23 22:42:23 发布
在HashMap中,当键值对数组无剩余空间时会进行扩容。插入时,依据key的哈希值确定位置,若位置已有元素,则比较key的哈希,相同则覆盖,不同则检查是否为红黑树。若是红黑树则直接插入,否则判断链表长度,超过8则转换为红黑树,否则执行链表插入。插入后,若键值对数量超过最大容量阈值,会再次扩容。

1550

被折叠的 条评论
为什么被折叠?



