HashMap的底層實現原理

2022-07-23 09:00:14 字數 901 閱讀 9548

1.線性鍊錶->陣列+鍊錶 --------hashmap是陣列結構、鍊錶結構與hash演算法的結合。

如圖所示:

hash演算法中  object.hashcode()   計算出object的雜湊碼值(int)

同乙個物件 多次呼叫 hashcode()得到的結構都是相同的

兩個物件呼叫equals()方法結果為true 即比較結果相同,這兩個物件再呼叫hashcode()也一定相同。如果這個兩個物件呼叫equals()方法結果不相同的話,這兩個物件再呼叫hashcode()也不一定不相同。

hashmap 和hashtable的區別:

hashmap允許空值和空鍵;

hashtable不允許空value。原始碼如圖:

而且是執行緒安全的,synchronized,下面這個是另外乙個concurrenthashmap,hashtable是鎖整張表,而這個是鎖某個段。hashmap是線性非安全的,效率較執行緒安全的來時相對高。

concurrenthashmap  不允許空鍵值對

// 2.通過hash演算法計算要插入的值。

hashmap底層實現原理

每次初始化hashmap都會構造乙個table陣列,而table陣列的元素為entry節點。static class entryimplements map.entryhashmap也可以說是乙個陣列鍊錶,hashmap裡面有乙個非常重要的內部靜態類 entry,這個entry非常重要,它裡面包含了...

HashMap底層實現原理

hashmap map new hashmap 在例項化以後,底層建立了長度為16的一維陣列entry table 已經執行過put操作.map.put key1 value1 呼叫key1所在類的hashcode 計算key1雜湊值,此雜湊值經過某種演算法計算後,得到在entry陣列中的存放位置 ...

HashMap底層實現原理

一 jdk1.7中hashmap的底層實現原理 首先,當我們通過hashmap的構造方法建立乙個hashmap物件時,底層就會建立乙個entry型別的一維陣列 預設初始化長度為16 當我們執行put操作的時候,會呼叫key所屬類的hashcode方法計算出key的hash值,然後將hash值通過雜湊...