天天看點

【深入Java基礎】LinkedHashMap的特點與原理

LinkedHashMap的特點與原理

一般來說HashMap的無序的,及内部的存儲順序和輸出順序不一定相同(除非輸入key的hash值是有序的)。而LinkedHashMap則是有序的。LinkedHashMap同樣支援null鍵和值,并且值可以重複,它也是不同步的。

它的有序性表現為兩種:

1.周遊輸出的順序與put順序一緻

2.按通路順序輸出

按輸入順序周遊輸出,這個好了解:

輸出:

按照通路順序輸出,就是被通路的entry會被連結清單連結到尾部:

可以看到1=aa在被通路過後跑到了最後一個。

這裡的LinkedHashMap有三個參數:

initialCapacity和loadFactor和hashmap裡的一樣,分别是初始化容量和裝載因子(預設為0.75)。accessOrder為是否按照通路順序排列,如果是,則被通路的entry将排列到最後一個,預設是false,即按照輸入順序排列。

LinkedHashMap繼承了HashMap并實作了Map接口。是以它具有HashMap的所有特性。并且内部對資料的存儲也是數組加連結清單的形式。但是它多了一個雙向連結清單來維護内部資料的順序關系。

Entry的定義

LikedHaashMap的Entry繼承了HashMap的Entry,并且多了<code>Entry&lt;K,V&gt; before, after;</code>,用于雙連結清單的前驅後繼節點。

具體的操作就不看了,會用就好。

關于LinkedHashMap的幾個問題

問  題

答      案

LinkedHashMap是否允許鍵值對為空

Key和Value都允許空

LinkedHashMap是否允許重複資料

Key重複會覆寫、Value允許重複

LinkedHashMap是否有序

有序

LinkedHashMap是否線程安全

非線程安全

網絡上志同道合,我們一起學習網絡安全,一起進步,QQ群:694839022