源码分析
我们分析过了 HashMap 及 HashSet, 本想着不再看 LinkedHashSet 了, 无非继承就是以 LinkedHashMap 进行存储呗。 但是点进去让我怀疑了好久, 以为新版本的源码有问题呢。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, Serializable { private static final long serialVersionUID = -2851667679971038690L;
public LinkedHashSet(int initialCapacity, float loadFactor) { super(initialCapacity, loadFactor, true); }
public LinkedHashSet(int initialCapacity) { super(initialCapacity, 0.75F, true); }
public LinkedHashSet() { super(16, 0.75F, true); }
public LinkedHashSet(Collection<? extends E> c) { super(Math.max(2 * c.size(), 11), 0.75F, true); this.addAll(c); }
public Spliterator<E> spliterator() { return Spliterators.spliterator(this, 17); } }
|
以上就是 LinkedHashSet 的所有源码, 怎么可能 LinkedHashMap 的影子呢。 怪了找了好久, 还百度了, 才发现, 其父类的构造方法里点进去
1 2 3
| HashSet(int initialCapacity, float loadFactor, boolean dummy) { map = new LinkedHashMap<>(initialCapacity, loadFactor); }
|
明白了吧, 存储容器是一个 LinkedHashMap 呢, 所以呢不再分析啦哈