HashMap的扩容机制
我们只看JDK1.8的扩容
- 生成新数组
- 遍历老数组中的每个位置的链表或红黑树
- 如果是链表,则直接将链表中的每个元素重新计算下标,添加到新数组中去。
- 如果是红黑树,则先遍历红黑树,计算出红黑树中的每个元素对应在新数组中的下标位置。
- 统计每个下标位置的元素个数;
- 若该位置下的元素个数超过了8,则生成一个新的红黑树,将根节点添加到新数组的对应位置。
- 如果该位置下的元素个数没有超过8,则生成一个链表,将链表的头节点添加到新数组的对应位置。
- 所有元素转移完成后,将新数组赋值给HashMap对象的table属性。

浙公网安备 33010602011771号