hashCode()函数
这里使用的是Polynomial Hashing, 但是有3个问题
1. 为什么不使用mod?
2. 对于长字符串,返回值为什么不会超出int的最大允许值?
3. 为什么选用31?有什么特别理由吗?
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}