确定需要扩容之后,先计算原来数组的长度,如果已经等于最大值了那就不可能再扩容了,直接返回。
如果不是,创新一个新的新长度的数组。然后执行转移方法。
转移方法:for循环遍历原数组,遍历每一个entry,首先保存entry中的下一个entry。(下一次需要循环的)。判断是否需要重新计算hash值,如果需要就重新计算。根据hash和新数组的长度算出新索引位置,将新数组上的数据保存到正在循环的entry中的entry成员变量上,再将正在循环的entry放到索引处,效果上来看就是在该索引处从头部插入了该数据,这就完成了一个数据的转移。最后将要循环的数据换成开始存储的下一条数据。一直执行到转移全部数据。最后将新数组赋值给HashMap的数组上,并且将临界值设置成新数组的长度乘以负载系数。扩容完毕。
相关文章: