15.Java SDK源码分析系列笔记-TreeSet

1. 是什么

无序、不重复的集合,使用TreeMap实现

2. 使用

public class TreeSetTest
{
    public static void main(String[] args)
    {
        TreeSet<Integer> set = new TreeSet<>();
        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. 构造方法

public TreeSet() {
	//底层使用TreeMap实现
    this(new TreeMap<E,Object>());
}

3.2. 属性

public class TreeSet<E> extends AbstractSet<E>
    implements NavigableSet<E>, Cloneable, java.io.Serializable
{

	//通过key的顺序访问的map接口
    private transient NavigableMap<E,Object> m;

	//作为map的value的占位符
    private static final Object PRESENT = new Object();
}

3.3. 其他方法

调用的TreeMap的方法,效率O(logN)

4. 总结

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

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