为什么Java的字符串中的hashCode()使用31作为乘数?根据Java文档,散列码为了String对象计算为:s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]使用int算术,哪里s[i]是i字符串的第四个字符,n字符串的长度,以及^指示指数。为什么31被用作乘数?我知道乘数应该是一个相对较大的素数。那么为什么不是29,37,甚至97呢?
4 回答

慕田峪4524236
TA贡献1875条经验 获得超5个赞

幕布斯6054654
TA贡献1876条经验 获得超7个赞
RSB r1, r0, r0, ASL #5 ; r1 := - r0 + (r0<<5)
添加回答
举报
0/150
提交
取消