鍍金池/ 問答/Java/ jdk1.8 中HashMap源碼的resize()方法

jdk1.8 中HashMap源碼的resize()方法

clipboard.png

圖片中紅框圈示代碼不懂;
假如原有hashMap的容量為16,下標(biāo)為15(j=15)的位置存放的是hash值為15,31,47三個數(shù)據(jù)。擴(kuò)容后hashMap容量為32,按照代碼hiHead中是31,47,存放在下標(biāo)31(j+16)的位置。但是47&31計算得到的位置不應(yīng)該是15嗎?

回答
編輯回答
拮據(jù)

47&16=0,并沒有存放在hiHead中,而是在loHead中,47&31=15,存儲位置并沒有改變。是計算錯誤導(dǎo)致的問題,現(xiàn)在已經(jīng)弄清楚了

2018年7月25日 13:10