public void put(int key, int value) {
int hash = (key % TABLE_SIZE);
if (table[hash] == null)
table[hash] = new LinkedHashEntry(key, value);
else {
LinkedHashEntry entry = table[hash];
while (entry.getNext() != null && entry.getKey() != key)
entry = entry.getNext();
if (entry.getKey() == key)
entry.setValue(value);
else
entry.setNext(new LinkedHashEntry(key, value));
}
}
我只是学习哈希表链接的概念,我想如果我们添加一个新项目。我们将看看项目的密钥是否存在,如果是这样,我们只需将它链接到同一个节点并使用相同的密钥。但是只是在Hash表链接标题下在线发现这个代码,但它没有做我所想的。或者我错了或这个代码。这部分让我最困惑:
if (entry.getKey() == key)
entry.setValue(value);
这与在开放地址散列中的操作相同。你只需用新的节点替换旧节点。只需要一个完整的定义,包括散列表和散列表链接的例子及其差异。
谢谢,
答案 0 :(得分:0)
哈希表链是一种哈希表的实现。它用于减少散列哈希冲突。例如,名为A的哈希值的项目为100,而另一项目已存在于表[100]中。要输入项目A,在打开地址哈希的情况下,项目A将在表格中插入索引101,这将增加哈希冲突的可能性(如果将来另一项目的哈希值为101)。并且哈希表链不会。