(h = key.hashCode()) ^ (h >>> 16)
解释:
获取对象的hashcode值,是int(4个字节),将code的高16位移位到低16位,然后和code求异或(^),不同为真。
比如有hashcode为 int hashcode=110456297
对应的二进制数据:
a:110 10010101 01101101 11101001
hashcode >>>16结果为:
b:00000110 10010101
对a和b异或(^)
结果为:
110100101010110101101111100,对应的十进制数为:110455676
总结:这样可以让hashcode的高16位和低16位充分哈希