14.Java SDK源码分析系列笔记-LinkedHashSet

1. 是什么

2. 如何使用

public class LinkedHashSetTest
{
    public static void main(String[] args)
    {
        LinkedHashSet<Integer> set = new LinkedHashSet<>();
        set.add(1);
        set.add(2);
        set.remove(2);
        System.out.println(set.contains(1));
        System.out.println(set.contains(2));
        System.out.println(set.contains(3));

    }
}

3. 源码分析

3.1. 1.构造方法

HashSet(int initialCapacity, float loadFactor, boolean dummy) {
	//使用的LinkedHashMap实现
    map = new LinkedHashMap<>(initialCapacity, loadFactor);
}

3.2. 2.属性

public class LinkedHashSet<E>
    extends HashSet<E>//继承了HashSet,因此属性同HashSet
    implements Set<E>, Cloneable, java.io.Serializable


//HashSet
public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable
{
    private transient HashMap<E,Object> map;
//作为value的占位符
    private static final Object PRESENT = new Object();
}

3.3. 3.其他方法

LinkedHashMap.md

4. 总结

底层使用LinkedHashMap实现,value使用newObject作为占位符

posted @ 2025-07-02 11:52  ThinkerQAQ  阅读(9)  评论(0)    收藏  举报