Java のハッシュマップでの衝突
Hiten Kanwar
2022年2月8日
2021年10月12日

Java コレクションインターフェイスは、HashMap
クラスを使用してハッシュテーブルデータ構造の機能を提供します。このクラスは、キーが識別子として機能し、マップ内の値に関連付けられて一意であるキーと値のペアに要素を格納します。
このチュートリアルでは、Java での衝突について説明します。
HashMap
キーには、ハッシュコードと equals()
メソッドが含まれています。マップに新しいエントリを挿入するたびに、ハッシュコードがチェックされます。オブジェクトのプール全体を解析し、equals()
メソッドを使用してハッシュコードの類似性を検索します。
エントリが存在する場合、新しい値が主に存在する値を置き換えます。それ以外の場合は、まったく新しいキーと値のペアが作成されます。
衝突は、複数のキーが同じバケットにハッシュされる場合、または 2つ以上のオブジェクトが同じハッシュコードを持っているが異なる場合に発生します。2つのキーが同じ値にハッシュされると、バケットの場所にリンクリストが形成され、すべての情報がキーと値のペアを含むマップのエントリとして保存されます。
エントリがリスト内に存在する場合、オブジェクトへのアクセスが面倒になる可能性があります。これらのリンクリストは、Java 8 バージョンからバイナリツリーに変換されました。
HashMap
は、連鎖と呼ばれる概念を使用して衝突のケースを非常に効率的に処理します。これは、Java 8 からの方法論の変換によって示されるように、リンクリストまたはバイナリツリーに値を格納することを提案します。
関連記事 - Java HashMap
- Java で HashMap を初期化する
- Java の HashMap、HashSet、Hashtable
- Java で HashMap を並べ替える
- Java で HashMap をキーで並べ替える
- Java での Hashtable と Hashmap の違い