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 的排序规则,使它能够满足各种排序需求。

Java TreeSet 排序:原理与示例详解

原文地址: https://www.cveoy.top/t/topic/odg5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录