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...