

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]。
