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<K,V> before, after;</code>,用于雙連結清單的前驅後繼節點。
具體的操作就不看了,會用就好。
關于LinkedHashMap的幾個問題
問 題
答 案
LinkedHashMap是否允許鍵值對為空
Key和Value都允許空
LinkedHashMap是否允許重複資料
Key重複會覆寫、Value允許重複
LinkedHashMap是否有序
有序
LinkedHashMap是否線程安全
非線程安全
網絡上志同道合,我們一起學習網絡安全,一起進步,QQ群:694839022