非常多标题:我哈希了一堆名称(10000-ish),有些输出为负值。 (表格大小是20011)。哈希值为负值
有问题的哈希函数是:
public static long hash2 (String key){
int hashVal = 0;
for(int i = 0; i < key.length(); i++)
hashVal = (37 * hashVal) + key.charAt(i);
return hashVal % 20011;
}
我周围挖,我想我要做的是与“环绕”。但我不知道如何去做。
如果您不确定它是否“环绕”,请使用“Math.toIntExact”。如果是这种情况,这应该会引发异常。另外,考虑到你的方法返回类型是'long',为什么不声明'hashVal'长? –
当你定义'hash2()'返回'long'时,为什么你要用'int'来表示'hashVal'?同样使用“长”。 –