【发布时间】:2012-11-02 21:17:39
【问题描述】:
我正在处理一项任务,我必须将 10,000 个数字散列到负载大小为 0.1、.2 .3 .... 到 0.9 的散列表中。我的问题是我的散列函数给了我一些溢出或类似的东西。如果我对负载因子为 0.5 的表(如 36077(mod)20,000)进行哈希处理,它会给我 16070 作为键。这只发生在高于负载因子的数字上。这是我的散列函数的代码。
public int linearHash(int in){
int hashKey = in%hashTableArray.length;
while(this.hashTableArray[hashKey] != 0){
hashKey += 1;
}
return hashKey;
}
谢谢。
【问题讨论】:
-
正如@Reimeus 下面所说的,对于开放寻址
hashKey,如果它到达数组的末尾,它应该回绕为零。如果数组已满,请注意不要进入无限循环。
标签: java hash hashtable integer-hashing