例如,如果您使用Java进行编程,并且想要为任意对象创建64位哈希函数,那么应用像murmurHash3' finalizer& #39;到Object.hashCode()的结果?
具体来说,是以下哈希函数
long Mix(int i)
{
long result = i;
return result ^ (result << 32) ^ (result << 33); // Or some 'better' way of mixing up the bits of i.
}
long Hash(Object o)
{
return Mix(o.hashCode());
}
比简单地做
更好long Hash(Object o)
{
return o.hashCode();
}
(我很清楚第二个没有通过32位哈希给你什么)
散列将用于实现(递归)散列连接,并且将通过执行hash % prime
来确定存储区。一个值得关注的问题是,为递归&#39;提供一系列独立的散列函数很难。部分,如果我们只有32位开始。
我认为答案是&#39; no&#39;并且你真的需要从64位哈希开始,该哈希是直接从对象的值计算的。
我想一个侧面的问题是,为了散列连接的目的,你是否真的需要一个64位散列。