0
 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);

这将与在开放地址散列中所做的相同。您只需用新节点替换旧节点。只需完整定义哈希表和哈希表链接及其差异的示例。

谢谢,

4

1 回答 1

0

哈希表链是一种哈希表的实现。它用于减少散列哈希冲突。例如,一个名为 A 的项目的哈希值为 100,而另一个项目已经存在于 table[100] 上。输入项A,在开放地址散列的情况下,项A会在表中插入索引为101的项,这会增加哈希冲突的机会(如果将来另一个项的哈希值为101)。而哈希表链不会。

于 2013-04-30T04:13:36.247 回答