HashMap原理的理解

HashMap 首先根据key计算hash值,(hashcode右移16位与hashcode异或计算)用hash值不用hashcode值是因为hashcode 32位 太大不方便计算,并且得到答案的概率不均衡。

 

 

第二步 是根据hash值去计算数组下标 ((n-1)&hash),用这个不用hash值取余计算因为二进制更快,符合计算机原理, 效果和hash值取余是一样的。

下面是具体操作

 

其中node 节点包含 hash值 ,key ,value 。还有next(链表的属性)

 

 

当计算出来的下标相同时,就是Hash冲突。

第一种情况,hash值相同时并且key相同,其实就是覆盖了

 

第二种情况,hash值相同,key不同,就在同一个数组下的next节点插入。

posted @ 2020-01-15 17:23  乌兹_永远滴神  阅读(139)  评论(0编辑  收藏  举报