LinkedHashMap特點(jdk1.8)

結束上篇的HashMap擴容分析,今天來聊聊LinkedHashMap的特點,繼承了HashMap類(以下都是基於jdk1.8)。之前簡單聊過LinkedHashSet的特點,它的底層實際就是使用的LinkedHashMap。

繼承樹

LinkedHashMap的繼承樹如下圖:
在這裏插入圖片描述

特點

(1)由於繼承HashMap類,所以默認初始容量是16,加載因子是0.75。accessOrder爲false時,表明按照插入順序訪問;爲true時,表明按照訪問順序訪問。

    public LinkedHashMap() {
        super();
        accessOrder = false;
    }
    
    public LinkedHashMap(int initialCapacity, float loadFactor) {
        super(initialCapacity, loadFactor);
        accessOrder = false;
    }
    
    public LinkedHashMap(int initialCapacity) {
        super(initialCapacity);
        accessOrder = false;
    }
    
    public LinkedHashMap(int initialCapacity,
                         float loadFactor,
                         boolean accessOrder) {
        super(initialCapacity, loadFactor);
        this.accessOrder = accessOrder;
    }

構造函數中使用父類的構造函數,關於父類可以指定初始容量的構造函數,已經在上篇博客中總結過了:HashMap指定初始容量的構造函數

(2)線程不安全,可以使用Map m = Collections.synchronizedMap(new LinkedHashMap(…)); 來實現線程安全的操作。

(3)具有fail-fast的特徵

(4)底層使用雙向鏈表,可以保存元素的插入順序,順序有兩種方式:一種是按照插入順序排序,一種按照訪問做排序。默認以插入順序排序。

(5)key和value允許爲null,key重複時,新value覆蓋舊value。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章