Ответ
Интерфейс Comparable<T> реализуется на уровне класса, объекты которого требуется сравнивать. Это позволяет определить естественный (нативный) порядок сортировки для экземпляров этого класса.
Почему на уровне класса? Потому что логика сравнения (compareTo) является неотъемлемым свойством самого объекта, а не внешнего компаратора.
Пример реализации:
public class Person implements Comparable<Person> {
private String name;
private int age;
// Конструкторы, геттеры...
@Override
public int compareTo(Person other) {
// Сравнение по возрасту (естественный порядок)
return Integer.compare(this.age, other.age);
}
}
Ключевые моменты:
- Метод
compareToвозвращает:- Отрицательное число, если
this < other. - Ноль, если объекты равны.
- Положительное число, если
this > other.
- Отрицательное число, если
- Реализация
Comparableпозволяет использовать объекты в сортированных коллекциях (например,TreeSet,TreeMap) и с утилитами сортировки (Collections.sort()). - Для альтернативных или множественных стратегий сортировки используйте отдельный
Comparator.