【发布时间】:2012-06-16 06:05:50
【问题描述】:
我最近不得不重写 Java 中的 equals 和 hashCode 方法。因此,我寻找一种快速有效的方法来计算哈希码。
Java 开发人员似乎同意以下方法:
int hash = 23;
hash = hash * 37 + paramOne;
hash = hash * 37 + paramTwo;
// And so on...
这可能是简单的算术,但我真的不明白。有什么保证?什么是极端情况?有没有更好(相当简单)的方法呢?
谢谢!
【问题讨论】:
-
“Java 开发者似乎同意以下方法”从何而来?
-
哈希函数很神奇。您可以分析它们,看看它们是否运作良好,但很难解释为什么任何特定数字有效。
-
@nhahtdh 例如:stackoverflow.com/questions/113511/hash-code-implementation、stackoverflow.com/questions/299304/…(并根据下面的一个答案)、stackoverflow.com/questions/3121524/understanding-of-hash-code 等等,不考虑我同事的意见。