Java8.HashMap源码-resize()流程图

2020-04-29 16:08:59来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Java8.HashMap源码-resize()流程图

HashMap.resize()

链表扩容图解

Q1:如何理解扩容时(e.hash & oldCap) == 0? Q2:如何理解扩容时newTab[j + oldCap]? 设:HashMap.table = table[4] table[1]=X1->X2->X3->X4 1=X1.hash&(4-1)=X2.hash&(4-1)... 4-1=3->0011 若X.hash&0011 = 0001 即X.hash=TT01(TT:0或者1)       X.hash&(oldCap=4)=0 =  TT01&0100 if=0 TT01->T001 else TT01->T101   现在开始扩容了。4<<1 =8 寻下标算法:T.hash&(8-1)=TT01&0111 情况1 TT01=T001    T001 &0111=0001即数组下标为1,说明hash为 T001的元素都落在table[1]上 情况2 TT01=T101     T101 & 0111=0101即数组下标为5,说明hash为 T101的元素都落在table[5]上   即: newTab[j + oldCap]。

原文链接:https://www.cnblogs.com/hutony/p/12793650.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:java中字节流操作(1)

下一篇:Java 在PPT中添加SmartArt图形