内容来自《收割Offer:互联网大厂面经》

hash 值的计算过程:(key == null) ? 0 : (h = key.hashCode()) ^ (h>>> 16)。

解释如下:

(1)计算 hash 值,int h = key.hashCode()。

(2)哈希值无符号右移16位与原哈希值做异或h ^(h >>> 16)处理。

把高位与低位进行混合运算,提高低位的随机性,降低碰撞概率。