1. 简介
我们知道 HashSet 是无序的,而在HashMap中,为了解决HashMap无序的问题,引入了 LinkedHashMap,所以同样的。为了解决该问题,引入了 LinkedHashSet。
2. 继承体系

3. 深入源码
public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.Serializable {
private static final long serialVersionUID = -2851667679971038690L;
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);
}
@Override
public Spliterator<E> spliterator() {
return Spliterators.spliterator(this, Spliterator.DISTINCT | Spliterator.ORDERED);
}
}
// LinkedHashSet 都是调用该构造方法创建实例
HashSet(int initialCapacity, float loadFactor, boolean dummy) {
map = new LinkedHashMap<>(initialCapacity, loadFactor);
}
可以看到,在LinkedHashSet中的方法和属性都很少,可以说其全部都是调用父类的方法。

4. 总结
(1)LinkedHashSet的底层使用LinkedHashMap存储元素。
(2)LinkedHashSet是按照插入顺序存储元素的。
LinkedHashSet详解
310

被折叠的 条评论
为什么被折叠?



