static int bernstein(String key)
{
int hash = 0;
int i;
for (i = 0; i < key.length(); i++)
hash = 31 * hash + key.charAt(i);
return hash;
}
static int fnv(String data)
{
final int p=16777619;
int hash=(int)2166136261L;
for (int i = 0; i < data.length(); i++)
hash=(hash ^ data.charAt(i))*p;
hash +=hash<<13;
hash ^=hash>>7;
hash +=hash<<3;
hash ^=hash>>17;
hash +=hash<<5;
return hash;
}
第一种方法适用于较短的String,长度不长于6,后面的是改进的fnv算法,适用于教程的String。在java中String.hashCode就是采用第一种方法实现的