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