HashMap的扩容机制

我们只看JDK1.8的扩容

  1. 生成新数组
  2. 遍历老数组中的每个位置的链表或红黑树
  3. 如果是链表,则直接将链表中的每个元素重新计算下标,添加到新数组中去。
  4. 如果是红黑树,则先遍历红黑树,计算出红黑树中的每个元素对应在新数组中的下标位置。
  • 统计每个下标位置的元素个数;
  • 若该位置下的元素个数超过了8,则生成一个新的红黑树,将根节点添加到新数组的对应位置。
  • 如果该位置下的元素个数没有超过8,则生成一个链表,将链表的头节点添加到新数组的对应位置。
  1. 所有元素转移完成后,将新数组赋值给HashMap对象的table属性。
posted @ 2025-05-16 12:06  kuki'  阅读(19)  评论(0)    收藏  举报