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

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

clipboard.png

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

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

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

2018年7月25日 13:10