美文网首页
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