Java的TreeSet是一种基于红黑树实现的有序集合。它的特点是元素按照大小顺序排序,可以快速地增加、删除和搜索元素。本文将介绍如何使用Java中的TreeSet函数进行有序集合操作,以便更好地应用在实际编程中。
一、TreeSet的基本操作
1.创建TreeSet对象
要使用TreeSet,需要先创建一个TreeSet对象。可以使用无参数的构造函数来创建一个空的TreeSet,也可以在创建TreeSet对象时指定一个Comparator来自定义排序规则。
示例代码:
TreeSet<Integer> set = new TreeSet<>();
TreeSet<String> set2 = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// 自定义排序规则
return o1.compareToIgnoreCase(o2);
}
});
2.添加元素
通过add()方法向TreeSet中添加元素。TreeSet会自动按照元素大小顺序进行排序,相同的元素只会保存一次。
示例代码:
set.add(3);
set.add(1);
set.add(2);
set.add(3);
// 结果为[1, 2, 3]
System.out.println(set);
3.删除元素
可以使用remove()方法删除TreeSet中的元素。
示例代码:
set.remove(3);
// 结果为[1, 2]
System.out.println(set);
4.判断元素是否存在
可以使用contains()方法判断TreeSet中是否存在某个元素。
示例代码:
boolean contains = set.contains(2);
// 结果为true
System.out.println(contains);
5.获取元素个数
可以使用size()方法获取TreeSet中元素的个数。
示例代码:
int size = set.size();
// 结果为2
System.out.println(size);
6.遍历元素
可以使用for循环或者forEach()方法遍历TreeSet中的元素。
示例代码:
for (Integer i : set) {
System.out.print(i + " ");
}
System.out.println();
set.forEach(System.out::println);
输出结果:
1 2
1
2
二、TreeSet的高级操作
1.获取第一个元素和最后一个元素
可以使用first()和last()方法获取TreeSet中的第一个元素和最后一个元素。
示例代码:
Integer first = set.first();
Integer last = set.last();
// 结果为1 2
System.out.println(first + " " + last);
2.获取子集合
可以使用subSet()方法获取TreeSet的一个子集合,该子集合包含从fromElement(包括)到toElement(不包括)之间的元素。如果不指定fromElement,则表示从TreeSet中的第一个元素开始。
示例代码:
TreeSet<Integer> subSet = (TreeSet<Integer>) set.subSet(1, 2);
// 结果为[1]
System.out.println(subSet);
TreeSet<String> subSet2 = (TreeSet<String>) set2.subSet("A", "c");
// 结果为[b, C]
System.out.println(subSet2);
需要注意的是,如果子集合发生改变,原始的TreeSet也会发生改变。
3.获取头部或尾部元素的子集合
可以使用headSet()方法和tailSet()方法获取TreeSet的头部(不包括toElement)或尾部(包括fromElement)元素的子集合。
示例代码:
TreeSet<Integer> headSet = (TreeSet<Integer>) set.headSet(2);
// 结果为[1]
System.out.println(headSet);
TreeSet<String> tailSet = (TreeSet<String>) set2.tailSet("b");
// 结果为[b, C]
System.out.println(tailSet);
同样需要注意的是,如果子集合发生改变,原始的TreeSet也会发生改变。
4.获取比指定元素小或大的元素
可以使用lower()方法、floor()方法、higher()方法和ceiling()方法获取比指定元素小或大的元素。
示例代码:
Integer lower = set.lower(2);
Integer floor = set.floor(2);
Integer higher = set.higher(1);
Integer ceiling = set.ceiling(1);
// 结果为1 2 2 1
System.out.println(lowe
.........................................................