散列函数在实现散列表中很重要。我知道在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