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);
これは、オープン アドレス ハッシュと同じように行われます。古いノードを新しいノードに置き換えるだけです。ハッシュ テーブルとハッシュ テーブル チェーンの例とそれらの違いを含む完全な定義が必要です。
ありがとう、