一、Java的哈希算法
public static int JavaHash(string key)
{
int hashCode = 0;
for (int i = 0; i < key.Length; i++)
{
hashCode = 31 * hashCode + key[i];
}
return hashCode;
}
{
int hashCode = 0;
for (int i = 0; i < key.Length; i++)
{
hashCode = 31 * hashCode + key[i];
}
return hashCode;
}
转换为数学公式
h(m) = h
-1 p + m (这里p = 31,h
0 = 0,m从key的字符里顺序取值)
转换为
|n|
h(m) = (
S m
i p
(i-1) ) + h
0p
n 其中h
0是hashCode的初始值,n是字符长度,m是顺序字符值,p是常量
i=1
参考文章: