非常多標題:我哈希了一堆名稱(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'?同樣使用「長」。 –