散列函數在實現散列表中很重要。我知道在java 對象有它的哈希碼,它可能是從弱哈希函數生成的。理解散列碼
下面是一個片段,是「補充哈希函數」
static int hash(Object x) {
int h = x.hashCode();
h += ~(h << 9);
h ^= (h >>> 14);
h += (h << 4);
h ^= (h >>> 10);
return h;
}
任何人可以幫助解釋什麼是哈希算法 的基本理念?生成非重複的整數?如果是這樣,這些按位運算如何執行?
一個好的散列函數也應該爲類似的值創建_very_不同的散列值。即使元素A和元素B在一個位上不同,他們的哈希應該是非常不同的。 – Piotr 2010-06-25 21:56:10
我一直很喜歡這個寫法:http://www.eternallyconfuzzled。COM/TUTS /算法/ jsw_tut_hashing.aspx – Joe 2010-06-25 22:51:30