在HashMap.java方法哈希
中 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);
}
//方法哈希
在计算哈希码后,几乎没有右移和按位“异或”运算符,有没有理由选择数字("20"&"12")
然后"7"&"4"
h ^= (h >>> 20) ^ (h >>> 12);
return h ^ (h >>> 7) ^ (h >>> 4);
肯定是h在争抢,有些人可以帮助解释这究竟是什么解决了吗?