首页 > 其他 > 详细

集合框架系列 Set(六):LinkedHashSet

时间:2020-03-18 17:11:15      阅读:50      评论:0      收藏:0      [点我收藏+]

目录

1 概述

2 源码分析

3 总结

 

 

 

1 概述

LinkedHashSet 继承了 HashSet,在此基础上维护了元素的插入顺序。

public class LinkedHashSet<E>
    extends HashSet<E>
    implements Set<E>, Cloneable, java.io.Serializable

2 源码分析

LinkedHashSet 的源码非常简单,只有简单的四4个构造方法。

public LinkedHashSet(int initialCapacity, float loadFactor) {
    super(initialCapacity, loadFactor, true);
}
    
public LinkedHashSet(int initialCapacity) {
    super(initialCapacity, .75f, true);
}
    
public LinkedHashSet() {
    super(16, .75f, true);
}
    
public LinkedHashSet(Collection<? extends E> c) {
    super(Math.max(2*c.size(), 11), .75f, true);
    addAll(c);
}

但我们不是说 HashSet 还维护了元素的插入顺序么?那这部分代码写在哪里呢?

这里我们要注意一个细节,即 LinkedHashSet 调用的都是 HashSet 的三个参数构造方法,即 HashSet 的这个方法。

HashSet(int initialCapacity, float loadFactor, boolean dummy) {
    map = new LinkedHashMap<>(initialCapacity, loadFactor);
}

从上面的代码我们知道,LinkedHashSet 虽然继承的是 HashSet,但是其却使用 LinkedHashMap 做为实现类。而 LinkedHashMap 则本身维护了元素的插入顺序,这在我们接下来解析 LinkedHashMap 源码的时候会讲到。

3 总结

LinkedHashSet 是在 HashSet 的基础上,维护了元素的插入顺序。虽然 LinkedHashSet 使用了 HashSet 的实现,但其却调用了 LinkedHashMap 作为最终实现,从而实现了对插入元素顺序的维护。

 

 

 

0

集合框架系列 Set(六):LinkedHashSet

原文:https://www.cnblogs.com/youngao/p/12518169.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!