TreeSet集合概述和特点
该集合在java.util包下。该集合也有泛型
TreeSet是类,也是集合
该集合是具体的类,继承自AbstractSet集合,或叫继承自AbstractSet类。该类实现了三个接口,分别是NavigableSet
该类没有直接实现Set接口,而是通过NavigableSet
该集合的元件,或理解为该集合的元素使用起有序的natural ordering
natural ordering是接口,该接口对实现它的每个类的对象强加一个整体排序,这个排序被称为类的自然排序,所以Comparable
Comparable
总结: 1、TreeSet集合里面的元素是有序的,可以使用根据自然排序,也可以使用根据比较器排序。使用哪种排序,取决于所使用排序的构造方法 2、该集合没有带索引的方法,所以不能使用普通for循环遍历,可以使用迭代器、增强for进行遍历 3、由于是TreeSet集合本身是Set集合,所以集合里不包含重复元素
TreeSet的构造方法如下,有1个无参和3个带参
方法名 | 描述 |
---|---|
TreeSet() | 构造一个新的,空的数组,根据其元素的自然排序进行排序 |
TreeSet(Collection<? extends E> c) | 构造一个新的空树集,根据其元素的自然顺序进行排序 |
TreeSet(Comparator<? super E> comparator) | 构造一个新的空树集,根据指定的比较器进行排序 |
TreeSet(SortedSet | 构造一个包含相同元素并使用与指定有序集相同排序的新树集 |
TreeSet集合概述和特点的练习
xxxxxxxxxx
package ch15;
import java.util.TreeSet;
public class a_8_1测试 {
public static void main(String[] args) {
//使用无参构造方法,创建TreeSet集合的对象。会按照自然排序进行排序,即元素按从小到大的顺序输出在控制台
TreeSet<Integer> ts = new TreeSet<Integer>(); //当把存储数据的泛型改为int时会报错。原因:集合存储的只能是引用类型
//如果一定要存储int类的数据,就要把泛型的位置写成int类型的包装类类型Integer
//添加元素
ts.add(10); //注意这里要的是Integer类型,但是我们可以直接写具体的整数。原因:JDK5之后可以自动装箱
ts.add(10); //重复元素是不会被存储进TreeSet集合
ts.add(20);
ts.add(30);
ts.add(1);
//遍历集合,使用增强for的方式进行遍历
for(Integer i : ts){
System.out.println(i); //
}
}
}