5
以下はJava 7のHashMap
実装のソースコードです(get()
メソッド)。ご覧のように、getメソッドでは、キーを比較するときに、キーの「ハッシュコードとキー」の値を比較して、リンクされたリスト内の項目がキーを検索するかどうかを判断します。しかし、2つのキーが同じであれば、もちろん同じハッシュコードを持ち、2つのキーが異なる場合、キーの値を比較するだけでそれらを区別することができます。では、なぜJavaのHashMap
ソースコードがキーのハッシュコードの同等性を気にしているのですか?hashmapキーの比較、キーのハッシュコードとキーの値の両方を比較する理由
public V get(Object key) {
if (key == null)
return getForNullKey();
int hash = hash(key.hashCode());
for (Entry<K,V> e = table[indexFor(hash, table.length)];
e != null;
e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
return e.value;
}
return null;
}