java.util.LinkedHashMap源码学习(一)

java.util.LinkedHashMap:

LinkedHashMap继承自HashMap,但它具有可预知的迭代顺序。LinkedHashMap维护着一个运行于所有条目的双重链表,此链表定义了迭代顺序,这个顺序可以是插入顺序或者是访问的顺序。基本操作和父类HashMap相似,它通过重写父类相关的方法来实现自己的双重链表特性。

LinkedHashMap中重要的字段:

1. Entry<K,V> header
在构造的时候被初始化,开始的时候header的头尾都是指向自身。

2. boolean accessOrder
迭代时的顺序,若为false则按照插入的顺序排序;若为true则按照访问的顺序排序,读的越多越在前。默认值为false,即按照插入顺序进行排序。

LinkedHashMap的构造函数:

1. LinkedHashMap(int initialCapacity, float loadFactor)
2. LinkedHashMap (int initialCapacity)
3. LinkedHashMap ()
4. LinkedHashMap (Map<? extends K, ? extends V> m)
5. LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder)

LinkedHashMap调用了父类HashMap的构造方法。不同的是增加了accessOrder字段的初始化。我们可以看到,附非指定,accessOrder的默认值为false,也就是说,LinkedHashMap中元素默认的迭代顺序为放入的次序,只有当指定accessOrder为true时,元素的迭代顺序才是按照访问的频次。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值