每Java文档中,哈希代码的String对象被计算为:
String
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] Run Code Online (Sandbox Code Playgroud) 使用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岁?
java string algorithm hash
algorithm ×1
hash ×1
java ×1
string ×1