我正在做一項任務,我必須將10,000個數字散列到負載大小爲.1,.2 .3 .... ....的哈希表中。我的問題是,我的散列函數給我一些溢出或類似的東西。如果我爲36077(mod)20,000的加載因子爲0.5的表做散列,它會給我16070作爲關鍵。這隻發生在高於負載因數的數字上。這是我的散列函數的代碼。Java:在散列函數溢出方面需要幫助
public int linearHash(int in){
int hashKey = in%hashTableArray.length;
while(this.hashTableArray[hashKey] != 0){
hashKey += 1;
}
return hashKey;
}
謝謝。
正如下面的@Reimeus所述,並且對於開放尋址,如果hashKey到達數組的末尾,它應該繞回到零。注意,如果數組已滿,則不要進入無限循環。 – James