哈希表链

时间:2013-04-29 23:06:20

标签: java data-structures hashtable chaining

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

这与在开放地址散列中的操作相同。你只需用新的节点替换旧节点。只需要一个完整的定义,包括散列表和散列表链接的例子及其差异。

谢谢,

1 个答案:

答案 0 :(得分:0)

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