Java のハッシュマップでの衝突

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

Java コレクションインターフェイスは、HashMap クラスを使用してハッシュテーブルデータ構造の機能を提供します。このクラスは、キーが識別子として機能し、マップ内の値に関連付けられて一意であるキーと値のペアに要素を格納します。

このチュートリアルでは、Java での衝突について説明します。

HashMap キーには、ハッシュコードと equals() メソッドが含まれています。マップに新しいエントリを挿入するたびに、ハッシュコードがチェックされます。オブジェクトのプール全体を解析し、equals() メソッドを使用してハッシュコードの類似性を検索します。

エントリが存在する場合、新しい値が主に存在する値を置き換えます。それ以外の場合は、まったく新しいキーと値のペアが作成されます。

衝突は、複数のキーが同じバケットにハッシュされる場合、または 2つ以上のオブジェクトが同じハッシュコードを持っているが異なる場合に発生します。2つのキーが同じ値にハッシュされると、バケットの場所にリンクリストが形成され、すべての情報がキーと値のペアを含むマップのエントリとして保存されます。

エントリがリスト内に存在する場合、オブジェクトへのアクセスが面倒になる可能性があります。これらのリンクリストは、Java 8 バージョンからバイナリツリーに変換されました。

HashMap は、連鎖と呼ばれる概念を使用して衝突のケースを非常に効率的に処理します。これは、Java 8 からの方法論の変換によって示されるように、リンクリストまたはバイナリツリーに値を格納することを提案します。

関連記事 - Java HashMap