我在这里遇到无限循环。我需要帮助在这里找到一个边缘案例,我可能没有考虑过。 (键,值)对的数组。 isRemoved()
标记表的一个元素,如果它已被删除。遇到无限循环
index
从'key'的哈希函数派生...在这里我试图添加一个元素到散列表。
int removed = -1;
while (table[index] != null) {
if (table[index].isRemoved()) {
if (removed != -1) {
removed = index;
}
} else {
if (key.equals(table[index].getKey())) {
dData = table[index].getValue();
table[index].setValue(value);
return dData;
} else {
index++;
index %= startingSize;
}
}
}
if (removed != -1) {
index = removed;
}
它不必更新现有值。我试图通过线性探测来解决冲突。所以如果一个索引被占用,这个值应该检查下一个索引。如果是,则检查下一个,直到找到空索引为止。如果到了最后,它应该回到零并开始。 因此,表[索引]可能或可能不为空 – 2014-10-07 04:31:25
您的第一个问题是“这里我试图添加一个元素到散列表”。无论如何,当你意识到第一遍没有碰撞时,为什么你要回到零点并重新开始呢?你是否期望表单在一个单独的线程中被更新,然后显然同步部分不被关注。 – KiranCK 2014-10-07 05:04:51