キーと値のペアを HashMap に入れると、2 つのキーのハッシュコードが同じになる可能性があり、この状態でキーと値の保存と取得がどのように処理されるかがわかりません。
アップデート
私がこれまでに理解していることは、2 つのオブジェクト キーが同じハッシュ コードを持つ場合、両方のキー オブジェクトが同じバケットに格納されるget(key)
ことobject.equals()
です。
ハッシュマップからオブジェクトを取得する必要があり、同じハッシュコードを持つオブジェクトが複数存在する場合、Javaはequals()
適切なオブジェクトを判別するために呼び出します。
そのため、をオーバーライドequals()
するときにオーバーライドすることが非常に重要hashCode()
です。
各バケットはリンクされたリストで表されるため、バケット内のエントリ数にはヒープ領域以外の制限はありません。考えられる hashCode の結果よりもバケットが少ないため、同じ hashCode を持つキーだけでなく、複数のハッシュ コードが同じバケットにマップされます。
hashCode()
衝突が多い 、またはバケットが少なすぎる HashMap は、リンクされたリストを長くする可能性があります。検索の最終段階はリンク リストの 1 つの線形スキャンであるため、良好なパフォーマンスは短いリンク リストに依存します。
一致は と の両方equals()
に依存するという前の回答に同意しhashCode()
ます。