Java集合7 LinkedHashMap實現

2021-08-21 15:52:15 字數 2097 閱讀 3568

linkedhashmap簡介

我們可以看到linkedhashmap是繼承於hashmap,實現了map介面

//accessorder為true時表示該linkedhashmap的key為訪問順序

//accessorder為false表示該linkedhashmap的key為插入順序

可以通過這個建構函式傳參將accessorder改為true,這時使得其遍歷順序按照訪問的順序輸出。

可以 看出這個是按照訪問順序輸出的。

linkedhashmap呼叫了父類的構造方法

可以看出最後呼叫了乙個init()方法,這個方法在hashmap中並沒有被實現,它在linkedhashmap中被實現。

對header進行了初始化

linkedhashmap是key鍵有序的hashmap的一種實現。它除了使用雜湊表這個資料結構,使用雙向鍊錶來保證key的順序

linkedhashmap 在不對hashmap做任何改變的基礎上,給hashmap的任意兩個節點間加了兩條連線(before指標和after指標),使這些節點形成乙個雙向鍊錶。在linkedhashmapmap中,所有put進來的entry都儲存在hashmap中,但由於它又額外定義了乙個以head為頭結點的空的雙向鍊錶,因此對於每次put進來entry還會將其插入到雙向鍊錶的尾部。

put(key,value)

對於put(key,value)方法而言,linkedhashmap完全繼承了hashmap的 put(key,value) 方法,只是對put(key,value)方法所呼叫的recordaccess方法和addentry方法進行了重寫;

此外,在linkedhashmap的addentry方法中,它重寫了hashmap中的createentry方法,我們接著看一下createentry方法:

在linkedhashmap中向雜湊表中插入新entry的同時,還會通過entry的addbefore方法將其鏈入到雙向鍊錶中。其中,addbefore方法本質上是乙個雙向鍊錶的插入操作,其原始碼如下:

對於get(key)方法而言,linkedhashmap則直接對它進行了重寫。

java 集合類 7 總結

vector 用arraylist代替vector。hashtable 用hashmap代替hashtable。satck 用linkedlist代替stack。properties hashtable和hashmap的區別 1.hashtable是dictionary的子類,hashmap是map...

java基礎 7 集合

基礎 物件導向 語法 異常 常用api 資料型別 io 集合 多執行緒 高併發 1 arraylist 底層資料結構是陣列,查詢快,增刪慢,執行緒不安全,效率高,可以儲存重複元素 2 linkedlist 底層資料結構是鍊錶,查詢慢,增刪快,執行緒不安全,效率高,可以儲存重複元素 3 vector ...

Java集合 Map集合

map map 用於儲存具有對映關係的資料,因此 map 集合裡儲存著兩組值,一組值用於儲存 map 裡的 key,另外一組用於儲存 map 裡的 value map 中的 key 和 value 都可以是任何引用型別的資料 map 中的 key 不允許重複,即同乙個 map 物件的任何兩個 key...