TreeSet详解和使用示例
概述
TreeSet是基于TreeMap实现的一种具有排序功能的集合,可以自动对集合中的元素进行排序,也可以自行指定排序规则。TreeSet中不允许插入重复元素,而且TreeSet中的元素一定是按照某种排序规则排序的,这也是TreeSet的最大特点。本文将详细介绍TreeSet的使用方法和注意事项。
TreeSet的特点
- TreeSet是一种有序的集合,它为集合中的元素提供了排序的功能;
- TreeSet中的元素必须实现Comparable接口或者提供Comparator比较器,否则无法添加元素到集合中;
- TreeSet可以保证集合中元素的唯一性;
- TreeSet提供了高效的数据访问和迭代性能。
TreeSet的构造方法
我们可以使用如下两种方式来创建一个TreeSet:
构造一个默认的TreeSet
无参构造方法会创建一个默认的TreeSet,它是一个空集合,通过后续的add方法添加元素到集合当中。
TreeSet<T> treeSet = new TreeSet<T>();
构造一个指定有序的TreeSet
有参构造方法可以指定TreeSet的排序规则,可以使用以下两个方法:
- 传递一个实现了Comparator接口的排序器对象;
- 直接传递需要排序的对象类型,此时需要确保该类型的对象实现了Comprable接口。
TreeSet<T> treeSet1 = new TreeSet<T>(new Comparator<T>() {
@Override
public int compare(T o1, T o2) {
// 自定义排序逻辑
return 0;
}
});
// 或者
TreeSet<T> treeSet2 = new TreeSet<T>();
TreeSet的常用方法
TreeSet 主要提供以下常用方法:
添加元素
使用add方法向TreeSet集合中添加元素。
treeSet.add(e);
添加重复元素会被TreeSet拒绝,返回false。
移除元素
使用remove方法从TreeSet集合中移除元素。
treeSet.remove(e);
如果不存在该元素则返回false。
获取集合大小
使用size方法获取该TreeSet集合中包含的元素个数。
int size = treeSet.size();
清空集合
使用clear方法清除集合中的所有元素。
treeSet.clear();
判断是否包含某个元素
使用contains方法判断该TreeSet集合是否包含指定元素。
boolean contains = treeSet.contains(e);
打印集合元素
遍历TreeSet集合元素并打印。
for (T e : treeSet) {
System.out.println(e);
}
TreeSet的示例
示例1:使用默认排序规则创建TreeSet
// 创建默认的TreeSet
TreeSet<Integer> treeSet = new TreeSet<>();
// 添加元素
treeSet.add(5);
treeSet.add(2);
treeSet.add(8);
treeSet.add(1);
// 输出元素
for (Integer i : treeSet) {
System.out.println(i);
}
输出结果:
1
2
5
8
示例2:使用自定义排序规则创建TreeSet
// 创建自定义排序逻辑的TreeSet
TreeSet<Integer> treeSet = new TreeSet<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1; // 降序排列
}
});
// 添加元素
treeSet.add(5);
treeSet.add(2);
treeSet.add(8);
treeSet.add(1);
// 输出元素
for (Integer i : treeSet) {
System.out.println(i);
}
输出结果:
8
5
2
1
小结
本文详细介绍了TreeSet的特点、构造方法和常用方法,以及两条使用示例说明。需要注意的是,如果在使用TreeSet时没有自定义排序规则,那么集合默认会使用Comparable接口的实现类来进行排序。如果需要自定义排序规则,需要传递一个实现了Comparator接口的排序器对象。同时,需要特别注意添加的元素必须能够比较大小,否则无法添加到集合中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:TreeSet详解和使用示例_动力节点Java学院整理 - Python技术站