1.7版本
1.
先⽣成新数组
2.
遍历⽼数组中的每个位置上的链表上的每个元素
3.
取每个元素的key,并基于新数组⻓度,计算出每个元素在新数组中的下标
4.
将元素添加到新数组中去
5.
所有元素转移完了之后,将新数组赋值给HashMap对象的table属性
1.8版本
1.
先⽣成新数组
2.
遍历⽼数组中的每个位置上的链表或红⿊树
3.
如果是链表,则直接将链表中的每个元素重新计算下标,并添加到新数组中去
4.
如果是红⿊树,则先遍历红⿊树,先计算出红⿊树中每个元素对应在新数组中的下标位置
a.
统计每个下标位置的元素个数
b.
如果该位置下的元素个数超过了8,则⽣成⼀个新的红⿊树,并将根节点的添加到新数组的对
应位置
c.
如果该位置下的元素个数没有超过8,那么则⽣成⼀个链表,并将链表的头节点添加到新数组
的对应位置
5.
所有元素转移完了之后,将新数组赋值给HashMap对象的table属性