「这是我参与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。 |
实例展示:
- 空参构造器:
//构造一个空Set,按自然顺序排序
TreeSet treeSet = new TreeSet<>();
treeSet.add(1);
treeSet.add(3);
treeSet.add(2);
System.out.println(treeSet);
-
带有初始化元素的含参集合构造器
Collection collection = new ArrayList(); collection.add(1); collection.add(3); collection.add(2); TreeSet treeSet1 = new TreeSet<>(collection); System.out.println(treeSet1);
-
带有比较器的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);
-
与指定的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);
小结
以上就是关于TreeSet类的基本特点的介绍和四种构造方法的使用,希望能对读者有所帮助。如有不正之处,欢迎留言评论。