Java集合学习(四)——TreeSet类概述和四种构造方法使用

575 阅读2分钟

「这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战

前言

 大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习进步。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

 本文主要介绍Java集合的TreeSet类的主要特点和四种构造方法。

1.1 TreeSet类

1.1.1 什么是TreeSet类

通过前面咱们对Collection集合体系的学习,我们已经知道了TreeSet类的基本特点,这里我们就来更加详细的学习这个集合类。

TreeSet类实现了Sorted接口,所以TreeSet类的一大特点就是有序(底层使用红黑树实现)。那到底怎么是什么顺序呢?这要根据实例化对象时使用的构造器来决定,如果是空参,那默认是自然排序,如果是指定了比较器,那就按照比较器的规则来排序。

注意:

前面已经说了,TreeSet内部元素是有序的,所以自然不能添加null元素。还需要注意的就是此实现不是同步的

1.1.2 TreeSet类的构造方法

TreeSet有四个构造方法,分别是:

构造方法描述
TreeSet()构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。
TreeSet(Collection c)构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。
TreeSet(Comparator comparator)构造一个新的空 TreeSet,它根据指定比较器进行排序。
TreeSet(SortedSet s)构造一个与指定有序 set 具有相同映射关系和相同排序的新 TreeSet。

实例展示:

  1. 空参构造器:
//构造一个空Set,按自然顺序排序
TreeSet treeSet = new TreeSet<>();
treeSet.add(1);
treeSet.add(3);
treeSet.add(2);
System.out.println(treeSet);

image-20211126205252985

  1. 带有初始化元素的含参集合构造器

    Collection collection = new ArrayList();
    collection.add(1);
    collection.add(3);
    collection.add(2);
    TreeSet treeSet1 = new TreeSet<>(collection);
    System.out.println(treeSet1);
    

image-20211126205550676

  1. 带有比较器的TreeSet构造器

    TreeSet treeSet2 = new TreeSet<>(new Comparator<Integer>() {
        @Override
        public int compare(Integer num1, Integer num2) {
            return num2-num1;
        }
    });
    treeSet2.add(1);
    treeSet2.add(3);
    treeSet2.add(2);
    System.out.println(treeSet2);
    

image-20211126205955705

  1. 与指定的Sorted set具有相同排序规则的构造器

    SortedSet s = new TreeSet(new Comparator<Integer>() {
        @Override
        public int compare(Integer num1, Integer num2) {
            return num2-num1;
        }
    });
    TreeSet treeSet3 = new TreeSet<>(s);
    treeSet3.add(1);
    treeSet3.add(2);
    treeSet3.add(3);
    System.out.println(treeSet3);
    

image-20211126210318402

小结

以上就是关于TreeSet类的基本特点的介绍和四种构造方法的使用,希望能对读者有所帮助。如有不正之处,欢迎留言评论。