LinkedHashMap特点(jdk1.8)

梦里梦外; 2023-06-04 13:52 88阅读 0赞

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







继承树

LinkedHashMap的继承树如下图:
在这里插入图片描述







特点

(1)由于继承HashMap类,所以默认初始容量是16,加载因子是0.75。accessOrder为false时,表明按照插入顺序访问;为true时,表明按照访问顺序访问。

  1. public LinkedHashMap() {
  2. super();
  3. accessOrder = false;
  4. }
  5. public LinkedHashMap(int initialCapacity, float loadFactor) {
  6. super(initialCapacity, loadFactor);
  7. accessOrder = false;
  8. }
  9. public LinkedHashMap(int initialCapacity) {
  10. super(initialCapacity);
  11. accessOrder = false;
  12. }
  13. public LinkedHashMap(int initialCapacity,
  14. float loadFactor,
  15. boolean accessOrder) {
  16. super(initialCapacity, loadFactor);
  17. this.accessOrder = accessOrder;
  18. }

构造函数中使用父类的构造函数,关于父类可以指定初始容量的构造函数,已经在上篇博客中总结过了:HashMap指定初始容量的构造函数

(2)线程不安全,可以使用Map m = Collections.synchronizedMap(new LinkedHashMap(…)); 来实现线程安全的操作。

(3)具有fail-fast的特征

(4)底层使用双向链表,可以保存元素的插入顺序,顺序有两种方式:一种是按照插入顺序排序,一种按照访问做排序。默认以插入顺序排序。

(5)key和value允许为null,key重复时,新value覆盖旧value。

发表评论

表情:
评论列表 (有 0 条评论,88人围观)

还没有评论,来说两句吧...

相关阅读