ここで Java HashMap の実装を調べます: http://www.docjar.com/html/api/java/util/HashMap.java.html私は次のことに気付きました:
使用される内部データ構造は、各インデックスでリンクされたリストの最初のエントリへの参照を格納する配列です。配列インデックスはキーのハッシュコードに基づいており、リンクされたリストはその特定のハッシュコードのバケットを表します。私が興味深いと思ったのは、メソッド indexFor(int h, int length) です。このメソッドは、特定のキーに対して、配列内のどのバケットを調べるかを決定します。しかし、return h & (length - 1) という実装は、次の意味で奇妙に見えます特定の配列インデックスと一致しない不確定な数のハッシュコードの場合、メソッドは 0 を返します。したがって、オブジェクトに実装する一意のハッシュコードに関係なく、配列内の 0 バケットはオブジェクトでいっぱいになる可能性が高いため、一意のハッシュコードが提供するはずのもの、つまりより高速なデータアクセスの恩恵を受けません。
何か不足していますか?
クリスチャン