说明
您必须通过实现 compareTo 方法来定义此顺序,该方法在您实现 Comparable 时强制执行。
这种顺序应该是人类对这种类型的所谓自然。例如,对于整数 (1, 2, 5, 9) 按值递增,对于 Persons 可能按年龄递增。作为设计师,您可以选择用户会觉得自然且不会混淆您的自定义类的东西。
然后,如果您对这种类型的集合进行排序,它将被用作默认排序。
参见Comparable 及其Comparable#compareTo 方法的文档:
此接口对实现它的每个类的对象进行总排序。这种排序称为类的自然排序,类的compareTo 方法称为其自然比较方法。
实现此接口的对象列表(和数组)可以按Collections.sort(和Arrays.sort)自动排序。实现此接口的对象可以用作排序映射中的键或排序集中的元素,而无需指定比较器。
示例
这是一个小例子:
public class Person implements Comparable<Person> {
private final String name;
private final int age;
// Constructor, getters, ...
@Override
public int compareTo(Person other) {
// Compare based on age, ascending
return Integer.compareTo(age, other.age);
}
}
用法如下:
Person first = new Person("John", 20);
Person second = new Person("Jane", 18);
Person third = new Person("Bob", 30);
List<Person> persons = new ArrayList<>();
persons.add(first);
persons.add(second);
persons.add(third);
// Ordering is now: John, Jane, Bob
// Sort based on natural ordering
Collections.sort(persons);
// Ordering is now: Jane, John, Bob