Интерфейсы Comparable и Comparator используются для сортировки объектов, но они различаются в подходе и сценариях использования.
🔹 Comparable определяет естественный порядок объектов. Реализуется самим классом, который нужно сравнивать.
Единственный метод – compareTo(T o):
@Override
public int compareTo(Person other) {
return Integer.compare(this.age, other.age);
}
Удобно, когда у объекта есть однозначный критерий сравнения. Например, сортировка по возрасту
🔹 Comparator позволяет создавать кастомные способы сравнения, не изменяя класс.
Основной метод – compare(T o1, T o2):
Comparator<Person> byName = (p1, p2) -> p1.getName().compareTo(p2.getName());
Используется для различных критериев сравнения, например, сортировка по имени или другим атрибутам.