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));
}
}
我剛剛學習哈希錶鏈接的概念,我想如果我們添加一個新項目。我們將看看該項目的密鑰是否存在,如果是的話,我們只需將它鏈接到具有相同密鑰的同一個節點上。但只是在Hash錶鏈接標題下在線找到這些代碼,但它沒有做到我所期望的到。它要麼我錯了或該代碼。此部分混淆了我最:哈希錶鏈接
if (entry.getKey() == key)
entry.setValue(value);
這是要幹什麼因爲它做什麼開放地址散列。你只用更換舊節點相同新的。只需要一個完整的定義,例如散列表和哈希錶鏈接及其差異。
謝謝,
此代碼看起來正確。您提到的這一行使用現有節點並覆蓋該值,這是正確的。您能否更具體地瞭解您的困惑? – raptortech97 2013-04-29 23:32:15
鏈接中不同的部分是'else'的情況。 – 2013-04-29 23:35:29