ハッシュコードの衝突を解決するために別個の連鎖を使用するHashMap
を考えてみましょう。コリソンチェーンでのハッシュコードの衝突処理
複数のエントリがある場合、hascodeが同じになるところでは、衝突メカニズムはすべてのエントリのリンクリストチェーンを形成します。
さて、そのようなリンクリストがとして存在する場合、考えることができます:ハッシュコードは同じ来ている、とキーが同じ値を持っている
(K1,V1,->) (K2,V2, ->) (K7,V7,->) (K9,V9,)
今、新しいエントリがで来ているが、 K7。 K7の既存の価値を上書きするか?
ハッシュコードが同じであり、あなたが衝突リスト上で動作している場合は、[はい、それは、以来、意志 '等号()'でキックうによって呼び出され
putVal()
のスニペットは、すなわちリスト内のキーは、新しいキーと等しいかどうかがチェックされます。したがって、K7と等しいキーに新しい値を追加すると、その値が置き換えられます。 - Btw、hashCode()とequals()を常に実装/オーバーライドする必要がある理由です。 – Thomas実装によって異なります。 @KevinEscheは言ったように、リストには重複が含まれている可能性があります。なぜあなたはそれを試してみませんか? – Bene
これはドキュメントに明記されています。同じキーを持つ新しいエントリは、古いエントリを上書きします。 –