在我班上的數據結構,我們正在學習不同的散列函數,但是這一次我特別不明白,爲什麼在最後三行代碼的他們是否HashVal < 0,因爲自HashVal是提醒對於tableSize的劃分,它不應該小於零。請我只想了解這最後一部分。先謝謝你。Hash函數溢出
public static int hash(String key, int tableSize)
{
int hashVal = 0;
for(int i = 0; i < key.length(); i++)
hashVal = 37 * hashVal + key.charAt(i);
hashVal %= tableSize;
if(hashVal < 0) //overflow case
hashVal += tableSize;
return hashVal;
}
hashVal是INT,而且可能溢出成爲負數。 – SCaffrey