首页 > 图灵资讯 > java面试题>正文

金三银四精选java面试题-HashMap的扩容机制原理

2023-12-11 13:45:46

 

HashMap的扩容机制原理

1.7版本

  1. 先生成新数组
  2. 遍历老数组中的每个位置上的链表上的每个元素
  3. 取每个元素的key,并基于新数组长度,计算出每个元素在新数组中的下标
  4. 将元素添加到新数组中去
  5. 所有元素转移完了之后,将新数组赋值给HashMap对象的table属性

 

1.8版本

  1. 先生成新数组
  2. 遍历老数组中的每个位置上的链表或红黑树
  3. 如果是链表,则直接将链表中的每个元素重新计算下标,并添加到新数组中去
  4. 如果是红黑树,则先遍历红黑树,先计算出红黑树中每个元素对应在新数组中的下标位置
    1. 统计每个下标位置的元素个数
    2. 如果该位置下的元素个数超过了6,则生成一个新的红黑树,并将根节点的添加到新数组的对应位置
    3. 如果该位置下的元素个数没有超过6,那么则生成一个链表,并将链表的头节点添加到新数组的对应位置
  1. 所有元素转移完了之后,将新数组赋值给HashMap对象的table属性

 
上一篇 金三银四精选java面试题-深拷贝和浅拷贝
下一篇 金三银四精选java面试题-CopyOnWriteArrayList的底层原理是怎样的

文章素材均来源于网络,如有侵权,请联系管理员删除。