なぜ容量は倍数または2でなければなりませんか? indexFor関数で "&"を使用する理由は? キーのハッシュコードを直接使用するのではなく、ハッシュ関数でハッシュを再計算するのはなぜですか?Java HashMapの実装について
この実装と「アルゴリズムの紹介」の説明との間には、いくつかの重要な違いがあると思います。
「>>>」とはどういう意味ですか?
static int hash(int h) {
// This function ensures that hashCodes that differ only by
// constant multiples at each bit position have a bounded
// number of collisions (approximately 8 at default load factor).
h ^= (h >>> 20)^(h >>> 12);
return h^(h >>> 7)^(h >>> 4);
}
誰でも教えていただけますか?私はいくつかのハッシュアルゴリズムを説明することができれば感謝します。 ありがとう!
私は "&"を使用して知っている、キーは、制限されたスロットにマップすることができます。ハッシュマップの衝突に対する影響はどうですか? – lingguang1997
'>>>'は符号なしの右シフトです。 Javaの通常の '>>'は符号ビットを保存して伝播し、負の数を負の値にします。シフトが発生すると、 '>>>'は符号ビットをゼロで埋めます。 –