哈希算法研究
一、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,h0 = 0,m从key的字符里顺序取值)
转换为
|n|
h(m) = ( S m i p (i-1) ) + h0pn 其中h0是hashCode的初始值,n是字符长度,m是顺序字符值,p是常量
i=1
参考文章: