【发布时间】:2013-04-29 23:06:19
【问题描述】:
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));
}
}
我刚刚学习哈希表链接的概念,我想如果我们添加一个新项目。我们将查看该项目的密钥是否存在,如果存在,我们只需将其链接到具有相同密钥的同一节点。但是刚刚在哈希表链接标题下在线找到此代码,但它并没有按照我的假设到。要么我错了,要么这个代码。这部分让我最困惑:
if (entry.getKey() == key)
entry.setValue(value);
这将与它在开放地址散列中所做的相同。您只需用新节点替换旧节点。只需完整定义哈希表和哈希表链接及其差异的示例。
谢谢,
【问题讨论】:
-
这段代码看起来是正确的。您提到的行使用现有节点并覆盖该值,这是正确的。您能否更具体地说明您的困惑?
-
链接不同的部分是
elsecase。
标签: java data-structures hashtable chaining