LinkedHashMap特点(jdk1.8)

结束上篇的HashMap扩容分析,今天来聊聊LinkedHashMap的特点,继承了HashMap类(以下都是基于jdk1.8)。之前简单聊过LinkedHashSet的特点,它的底层实际就是使用的LinkedHashMap。

继承树

LinkedHashMap的继承树如下图:
LinkedHashMap特点(jdk1.8)_第1张图片

特点

(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。

你可能感兴趣的:(集合)