5

キーと値のペアを HashMap に入れると、2 つのキーのハッシュコードが同じになる可能性があり、この状態でキーと値の保存と取得がどのように処理されるかがわかりません。

アップデート

私がこれまでに理解していることは、2 つのオブジェクト キーが同じハッシュ コードを持つ場合、両方のキー オブジェクトが同じバケットに格納されるget(key)ことobject.equals()です。

4

2 に答える 2

9

ハッシュマップからオブジェクトを取得する必要があり、同じハッシュコードを持つオブジェクトが複数存在する場合、Javaはequals()適切なオブジェクトを判別するために呼び出します。

そのため、をオーバーライドequals()するときにオーバーライドすることが非常に重要hashCode()です。

于 2012-12-07T06:41:21.530 に答える
3

各バケットはリンクされたリストで表されるため、バケット内のエントリ数にはヒープ領域以外の制限はありません。考えられる hashCode の結果よりもバケットが少ないため、同じ hashCode を持つキーだけでなく、複数のハッシュ コードが同じバケットにマップされます。

hashCode()衝突が多い 、またはバケットが少なすぎる HashMap は、リンクされたリストを長くする可能性があります。検索の最終段階はリンク リストの 1 つの線形スキャンであるため、良好なパフォーマンスは短いリンク リストに依存します。

一致は と の両方equals()に依存するという前の回答に同意しhashCode()ます。

于 2012-12-07T09:11:33.537 に答える