Java TreeSet 排序:原理与示例详解
TreeSet 是 Java 中一个基于红黑树实现的有序集合。它默认按照元素的自然顺序进行排序,或者根据创建时提供的 Comparator 进行排序。在使用 TreeSet 时,如果没有指定 Comparator,那么元素必须实现 Comparable 接口。
TreeSet 排序示例
假设我们有一个类 Person,它包含姓名和年龄两个属性,我们想按照年龄从小到大排序,可以这样实现:
import java.util.Comparator;
import java.util.TreeSet;
public class TestTreeSet {
public static void main(String[] args) {
// 创建 Comparator 对象
Comparator<Person> comparator = new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return p1.getAge() - p2.getAge();
}
};
// 创建 TreeSet 对象,并传入 Comparator
TreeSet<Person> set = new TreeSet<>(comparator);
// 添加元素
set.add(new Person('Alice', 18));
set.add(new Person('Bob', 20));
set.add(new Person('Charlie', 15));
// 遍历输出
for (Person p : set) {
System.out.println(p);
}
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return 'Person{' +
'name=' + name + ''' +
', age=' + age +
'}';
}
}
输出结果为:
Person{name='Charlie', age=15}
Person{name='Alice', age=18}
Person{name='Bob', age=20}
可以看到,输出结果按照年龄从小到大排序。
总结
通过使用 Comparator 接口,我们可以轻松地自定义 TreeSet 的排序规则,使它能够满足各种排序需求。
原文地址: https://www.cveoy.top/t/topic/odg5 著作权归作者所有。请勿转载和采集!