java HashMap 實現原理

2021-07-22 10:35:51 字數 1090 閱讀 6706

hashmap 我們不陌生,他是允許存放null 物件的,他的結構其實就是乙個陣列,不過稍微複雜一點:

把這個圖畫出來,起始就很好理解了,首先我們來看一下他的構造方法:

/**

* constructs a new empty instance.

*/@suppresswarnings("unchecked")

public hashmap()

可以看到 初始的時候就是乙個 長度為空的陣列,他的擴容大小由 

capacityforinitsize()決定的

/**

* not round the result up to a power of two; the caller must do this!

* the returned value will be between 0 and maximum_capacity (inclusive).

*/static int capacityforinitsize(int size)

int hash = collections.secondaryhash(key);

hashmapentry tab = table;

int index = hash & (tab.length - 1);

for (hashmapentrye = tab[index]; e != null; e = e.next)

}// no entry for (non-null) key is present; create one

modcount++;

if (size++ > threshold)

addnewentry(key, value, hash, index);

return null;

}

1.判斷key是否為空,是否是儲存為空資料

2.獲取key的hash值,然後確定值在陣列中的儲存位置

3.遍歷比對key,如果找到而立對應的key,則替換對應的value值,

4.如果沒有找到key,則是否需要擴容,如果需要則擴容,並重新計算hash值以及對應陣列的位置。

Java HashMap實現原理

連續記憶體位址 資料元素 ox0001 jack ox0010 rose ox0011 petter ox0100 john 特點 1 隨機訪問表中元素。2 插入和刪除操作需要移動元素。記憶體位址 資料元素 下個位址 ox0001 jack ox0111 ox1010 rose ox0100 ox0...

java Hashmap原理分析

size medium color red b 1.hashmap的資料結構 b color size 資料結構中有陣列和鍊錶來實現對資料的儲存,但這兩者基本上是兩個極端。b 陣列 b 陣列儲存區間是連續的,占用記憶體嚴重,故空間複雜的很大。但陣列的二分查詢時間複雜度小,為o 1 陣列的特點是 定址...

java HashMap 基本用法

hashmap可以用於儲存 鍵 值 對 這樣的資料,查詢 訪問時間開銷接近o 1 這裡列出最基本的用法備忘。新建 hashmapmap new hashmap 插入 map.put k k,v v 訪問 v v map.get k 示例 新建hashmapmap new hashmap 加入鍵值對m...