我只是想知道为什么在类的hashCode()
方法中使用质数?例如,当使用Eclipse生成我的hashCode()
方法时,总是使用素数31
:
public int hashCode() {
final int prime = 31;
//...
}
参考文献:
这是有关Hashcode的一个很好的入门,以及有关我发现的哈希如何工作的文章(C#,但这些概念是可转让的): Eric Lippert的GetHashCode()准则和规则
3
相关:为什么Java的String中的hashCode()使用31作为乘数?
—
马特b 2010年
这或多或少是问题stackoverflow.com/questions/1145217/…的重复。
—
汉斯·彼得·斯托尔
请检查我在stackoverflow.com/questions/1145217/上的答案。它与域(不是环!)上的多项式的性质有关,因此与质数有关。
—
TT_