HashMap 1.7扩容死循环问题源码分析及解决方案.pdfVIP

  • 2
  • 0
  • 约3.17千字
  • 约 6页
  • 2026-05-20 发布于北京
  • 举报

HashMap 1.7扩容死循环问题源码分析及解决方案.pdf

HashMap7会发生扩容死循环

源码角度分析:

HashMap1.716*2=32

HashMap1.816116*2=32

原来的tablekey转移新的table数组中

重新计算hashhash值不变node节点中保存计算好hash值

误区:没有重新计算hash

线程安全问题:共享同同一个全局变量

intnewCapacity=newTable.length;

##遍历当前原来数组中所有的链表

for(EntryK,Ve:table){

###判断每个下标对应存放的链表是否为空

while(null!=e){

EntryK,Vnext=e.next;

inti=indexFor(e.hash,32);

e.next=newTable[i];

newTable[i]=e;

e=next;

}

}

原来oldIndex=1

循环第一次:

E=a;next=c;

计算A的key在新的table中对应index5;

A.next=newTable[

文档评论(0)

1亿VIP精品文档

相关文档