Java 字符串的 hashCode() 方法中为什么使用 31 作为乘数?
Java 文档规定了 String 对象的乘数的计算哈希码如下:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
其中 s[i] 是第 i 个字符串的字符,n 是字符串的长度,^ 表示求幂。该公式包含固定乘数 31。
使用 31 作为乘数的基本原理
根据 Joshua Bloch 的受人尊敬的著作《Effective Java》,选择 31因为乘数取决于几个因子:
以上是为什么 Java 的字符串'hashCode()”使用 31 作为乘数?的详细内容。更多信息请关注PHP中文网其他相关文章!