java中HashMap的動作原理是什麼?

HashMapはハッシュテーブルに基づいたデータ構造で、その仕組みはキー(key)のハッシュ値によって格納位置を素早く特定することです。

以下は具体的な作業原理です:

  1. HashMapにキーバリューペアを挿入する際、まずはキーのハッシュ値に基づいて格納位置を計算し、この位置を「バケット」と呼びます。
  2. もしバケツが空であれば、キーと値のペアを直接挿入します。
  3. キーが既に存在する場合は、対応する値を更新します。
  4. 存在しないキーの場合、新しいキーと値のペアをリストの最後に挿入します(Java 8以降、リストの長さが一定の閾値(デフォルトは8)に達すると、リストは赤黒木に変換され、検索効率が向上します)。
  5. キーに対応する値を探す必要がある場合、HashMapはキーのハッシュ値に基づいて対応するバケットを見つけ、次にリンクリスト(またはレッドブラックツリー)内で順番にキー値のペアを比較し、対応するキー値のペアが見つかるか、リンクリスト(またはレッドブラックツリー)が終了しても見つからないままであるまで続行します。

ハッシュ関数は完璧ではないため、異なるキーが同じバケットにマッピングされる可能性があることに注意が必要です。このような状況を「ハッシュ衝突」と呼びます。ハッシュ衝突を解決するために、HashMapは同じハッシュ値を持つキーと値のペアを保存するためにリンクリスト(または赤黒木)を使用し、データの損失を防ぎます。

bannerAds