美文网首页
java8中treeset源码分析

java8中treeset源码分析

作者: 隔壁小新 | 来源:发表于2022-10-24 08:52 被阅读0次

大纲

  • treeset原理分析
  • treeset源码分析

1. treeset原理分析

treeset中的数据是唯一的,并且是有序的,它底层使用了treemap进行存储,treemap底层使用了红黑树进行存储,所以treeset也是使用红黑树的模式进行存储。

2. treeset源码分析

public class TreeSet<E> extends AbstractSet<E>
    implements NavigableSet<E>, Cloneable, java.io.Serializable
  • 实现了NavigableSet,支持排序
  • 实现了Cloneable,接口支持拷贝
    -实现了serializeble,接口支持序列化
    private transient NavigableMap<E,Object> m;

    // Dummy value to associate with an Object in the backing Map
    private static final Object PRESENT = new Object();

NavigableMap接口,Treemap实现了当前接口,
PRESENT为当前对象,可忽略

    TreeSet(NavigableMap<E,Object> m) {
        this.m = m;
    }
    public TreeSet() {
        this(new TreeMap<E,Object>());
    }
    public TreeSet(Comparator<? super E> comparator) {
        this(new TreeMap<>(comparator));
    }

  • 第一个构造方法为传入一个实现了NavigableMap接口的一个map->TreeMap
    -第二个接口可以传入一个比较器,再创建一个treemap把比较器传入,构建一个treemap对象。

3. 其余的add(),remove()方法都是调用的m,也就是treemap的方法进行实现。

    public boolean add(E e) {
        return m.put(e, PRESENT)==null;
    }
    public boolean remove(Object o) {
        return m.remove(o)==PRESENT;
    }

需要了解treemap可以看我的文章java8中treemap源码分析 - 简书 (jianshu.com)

喜欢的话点个👍

相关文章

网友评论

      本文标题:java8中treeset源码分析

      本文链接:https://www.haomeiwen.com/subject/xpfgzrtx.html