早看到你的答案,就不琢磨了。
Java1.8-IdentityHashMap源碼解析一. 概述 ??IdentityHashMap利用Hash表來實(shí)現(xiàn)Map接口,比較鍵(和值)時(shí)使用引用相等性代替對(duì)象相等性,也就是說使用 == 而不是使用 equals。 比...
早看到你的答案,就不琢磨了。
Java1.8-IdentityHashMap源碼解析一. 概述 ??IdentityHashMap利用Hash表來實(shí)現(xiàn)Map接口,比較鍵(和值)時(shí)使用引用相等性代替對(duì)象相等性,也就是說使用 == 而不是使用 equals。 比...
((h << 1) - (h << 8)) & (length - 1)
h << 1: 左移,末位補(bǔ)0,偶數(shù)
h << 8: 同理,偶數(shù)
偶數(shù)減偶數(shù),還是偶數(shù),即二進(jìn)制末位為0
0與任何數(shù)(0/1)相與還是0
即最后的結(jié)果,二進(jìn)制末位是0,說明是偶數(shù)
194b9b10d0ed 評(píng)論自Java1.8-IdentityHashMap源碼解析
h右移一位減 h 右移八位,二進(jìn)制的最后一位肯定是0,lenth為2的倍數(shù),length-1后,二進(jìn)制的最后一位肯定是1 , 0 & 1 肯定等于 0 ,所以最后一位肯定是0,所以一定是個(gè)雙數(shù)。
Java1.8-IdentityHashMap源碼解析一. 概述 ??IdentityHashMap利用Hash表來實(shí)現(xiàn)Map接口,比較鍵(和值)時(shí)使用引用相等性代替對(duì)象相等性,也就是說使用 == 而不是使用 equals。 比...