Javaハッシュマップでは、いくつかの方法を使用してそれを行うことができます。暗黒時代の私の古いCS201データ構造クラスから:
1)ハッシュマップの各バケットは、同じハッシュ値を持つ追加されたすべてのエントリを保持するリンクリストの先頭になることができます。追加時の衝突は、リンクリストの最後に新しいエントリを追加することを意味します。検索とは、リンクリストのバケットにハッシュした後、リンクリスト内のすべてのものを線形にチェックする必要があることを意味します。
2)衝突が発生し、ストアが概念的に配列である場合は、空のスポットを見つけてそこに新しいエントリを追加するまで、その時点から繰り返すことができます。検索の場合、これは、ハッシュバケットが占有されていることがわかった場合、そのポイントから、ハッシュマップをサポートする配列内の次の空のスポットまで線形に比較する必要があることを意味します。
どちらの場合も、同じハッシュを持つエントリが複数あると、パフォーマンスが低下します。一般的なケースでは、これは、ハッシュ関数(ハッシュコードの生成に使用)が少数の可能な値を返すことを意味し、マップがいっぱいになるとパフォーマンスが低下します。Java HashMapは、ハッシュマップに入る一般的なデータの一般的なケースにうまく適合するように、そのようなことに関する50年の研究を利用してきました。
@dystroyが、equals()メソッドに従って一致する2つのエントリをマップに含めることはできないというルールについてコメントしたことに注意してください。