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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值