HashMap原理的理解

2022-07-30 11:21:13 字數 738 閱讀 4007

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節點插入。

HashMap的原理解析

進行hashmap原理解析 手寫乙個簡單的hashmap hashmap的底層執行是陣列加鍊表 鍊錶就是為了解決雜湊碰撞的情況 public class hashmap 關羽的hash值是 679082 index is 2 孫權的hash值是 751370 index is 5 張飛的hash值是...

HashMap原理解析

日常工作中經常用到map,基本上是用map map new hashmap 來得到乙個hashmap物件,之前並未深入去研究hashmap的實現原理,只是去簡單的去建立然後使用它。這次想深入了解便,去研究了一下hashmap的原始碼。做點筆記,記錄一下自己的一些收穫,想到哪寫到哪吧。hashmap繼...

HashMap原理解析

hashmap在jdk1.8之前和jdk1.8之後內部實現有所不同 在jdk1.8之前,hashmap底層是陣列和鍊錶的結構,從jdk1.8開始內部實現使用了陣列和鍊錶以及紅黑樹一 jdk1.8之前的hashmap實現原理 以jdk1.7為例 先看構造方法 public hashmap public...