爲什麼容量必須是2或2? 爲什麼在indexFor函數中使用「&」? 爲什麼重新計算散列函數中的散列而不是直接使用鍵的散列碼?關於Java HashMap的實現
我認爲這個實現和「算法介紹」的描述之間有一些重要的區別。
「>>>」是什麼意思?
static int hash(int h) {
// This function ensures that hashCodes that differ only by
// constant multiples at each bit position have a bounded
// number of collisions (approximately 8 at default load factor).
h ^= (h >>> 20)^(h >>> 12);
return h^(h >>> 7)^(h >>> 4);
}
任何人都可以給我一些指導?我很感激如果有人能解釋哈希算法。 非常感謝!
我知道使用「&」,密鑰可以映射到有限的插槽。對哈希映射中碰撞的影響如何? – lingguang1997 2012-04-03 21:30:07
'>>>'是無符號右移。 Java中的常規'>>'將保留並傳播符號位,並保留負數。發生移位時,>>>將填充符號位。 – 2012-04-04 16:10:48