HashMap解析以及使用

2022-07-11 03:54:09 字數 906 閱讀 9261

一、hashmap的資料結構

hashmap的資料結構是鍊錶雜湊,即陣列和鍊錶的結合體。

陣列:儲存空間連續,空間複雜度高,便於查詢,不便於插入和刪除;

鍊錶:儲存空間離散,空間複雜度小,便於插入和刪除,反而定址困難不易查詢;

二、底層原始碼實現

// 儲存的原始碼

public

v put(k key, v value)

}//如果i索引處的entry為null,表明此處還沒有entry。

modcount++;

//將key、value新增到i索引處。

addentry(hash, key, value, i);

return

null

;}

首先,根據key計算hash值,根據hash值得到這個元素在陣列中的索引;如果陣列中的這個位置上放了其他元素,那麼在這個位置上的元素們以鍊錶的方式存放。新加入的放入鏈頭,最先加入的放入鏈尾。如果陣列中的這個位置上沒有放元素,直接放入即可。

addentry(hash, key, value, i)方法根據計算出的hash值,將key-value對放在陣列table的i索引處。addentry 是 hashmap 提供的乙個包訪問許可權的方法。

void addentry(int hash, k key, v value, int

bucketindex)

// 根據key獲取元素

public

v get(object key)

return

null

;}

從hashmap中get元素時,首先計算key的hashcode,找到陣列中對應位置的某一元素,然後通過key的equals方法在對應位置的鍊錶中找到需要的元素。

HashMap深度解析

簡介 基於雜湊表的 map 介面的實現。此實現提供所有可選的對映操作,並允許使用 null 值和 null 鍵。除了非同步和允許使用 null 之外,hashmap 類與 hashtable 大致相同。此類不保證對映的順序,特別是它不保證該順序恆久不變。此實現假定雜湊函式將元素適當地分布在各桶之間,...

HashMap初步解析

hashmap集合 1 hashmap集合底層是雜湊表 雜湊表的資料結構。2 雜湊表是乙個怎樣的資料結構呢?雜湊表是乙個陣列和單向鍊錶的結合體。陣列 在查詢方面效率很高,隨機增刪方面效率很低。單向鍊錶 在隨機增刪方面效率較高,在查詢方面效率很低。雜湊表將以上的兩種資料結構融合在一起,充分發揮它們各自...

HashMap以及跟HashMap相關的內容

hashmap相信大家都用過,是以這樣的格式儲存的。其實內部真正用於儲存的是entry的陣列table 桶 下面就是源 了已經標註出來了 emprty table是個空表,用於是初始化時使用的。default load factor是負載因子,default initial capacity是初始化...