谈谈HashMap中的hash()方法

2019-08-13  本文已影响0人  lenny611

先来看看jdk1.8源码:


jdk1.8源码.png

jdk1.7源码:


jdk1.7源码..png

简单来说,不管是jdk1.8无符号右移16位再异或,还是jdk1.7对 hashCode 分别无符号右移 (>>>) 7 位和 4 位,再与自身进行异或(^)处理,都是为了降低hash冲突的概率,其实说白了,这个hash就是HashMap的扰动函数,而扰动函数的目的就是为了降低冲突。而且hash的值也与table数组的下标相关,具体可以再看源码

上一篇下一篇

猜你喜欢

热点阅读