快速简单的哈希码组合

快速简单的哈希码组合,第1张

快速简单的哈希码组合

我个人会避免XOR-这意味着任何两个相等的值都将导致0-因此hash(1,1)== hash(2,2)== hash(3,3)等。另外hash(5,0)
== hash(0,5)等可能偶尔出现。我 已经 刻意用它集合散列-如果你想哈希项目的顺序,你 关心的排序,这是不错的。

我通常使用:

unchecked{    int hash = 17;    hash = hash * 31 + firstField.GetHashCode();    hash = hash * 31 + secondField.GetHashCode();    return hash;}

这就是Josh Bloch在Effective Java中建议的形式。上次回答类似的问题时,我设法找到了一篇文章进行了详细讨论-
IIRC,没有人真正知道它为什么运作良好,但确实如此。它也很容易记住,易于实现,并且易于扩展到任意多个字段。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5621459.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存