Java中的TreeSet是一个基于红黑树实现的有序集合。它继承自AbstractSet类并实现了NavigableSet接口,可以存储和操作无重复元素的有序元素集合。
创建TreeSet实例
可以通过以下两种方式创建TreeSet实例:
// 创建一个空的TreeSet
TreeSet<String> treeSet = new TreeSet<>();
// 使用Collection类型的对象创建TreeSet
List<Integer> list = new ArrayList<>(Arrays.asList(3, 5, 1));
TreeSet<Integer> treeSet = new TreeSet<>(list);
TreeSet元素的排序方式
TreeSet中的元素按照自然顺序或指定顺序进行排序。可以通过实现Comparator接口或让元素类实现Comparable接口来指定排序方式。
自然顺序指的是元素类已经实现了Comparable接口来指定排序方式。如下面的例子中,TreeSet按照数字大小进行排序:
TreeSet<Integer> treeSet = new TreeSet<>();
treeSet.add(5);
treeSet.add(3);
treeSet.add(9);
System.out.println(treeSet); // [3, 5, 9]
指定顺序则需要实现Comparator接口。下面是一个自定义的Person类,使用Comparator接口进行按照年龄从小到大排序:
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + "(" + age + ")";
}
}
class AgeComparator implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return o1.age - o2.age;
}
}
public class Main {
public static void main(String[] args) {
TreeSet<Person> treeSet = new TreeSet<>(new AgeComparator());
treeSet.add(new Person("Alice", 20));
treeSet.add(new Person("Bob", 18));
treeSet.add(new Person("Cathy", 22));
System.out.println(treeSet); //[Bob(18), Alice(20), Cathy(22)]
}
}
TreeSet的一些常用方法
除了add()方法添加元素之外,TreeSet还提供了一些其他常用的方法:
- remove(Object o):删除指定的元素
- first():获取第一个元素
- last():获取最后一个元素
- ceil(E e):返回大于或等于给定元素的最小元素;如果不存在此类元素,则返回null。
- floor(E e):返回小于或等于给定元素的最大元素;如果不存在此类元素,则返回null。
示例如下:
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
TreeSet<Integer> treeSet = new TreeSet<>();
treeSet.add(5);
treeSet.add(3);
treeSet.add(9);
System.out.println(treeSet.remove(3)); // true
System.out.println(treeSet); // [5, 9]
System.out.println(treeSet.first()); // 5
System.out.println(treeSet.last()); // 9
System.out.println(treeSet.floor(6)); // 5
System.out.println(treeSet.ceiling(6)); // 9
}
}
以上就是Java中TreeSet的详细介绍和用法,希望对你有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的TreeSet是什么? - Python技术站