Comparable используется для определения "естественного" порядка сортировки для объекта класса. Реализует интерфейс Comparable<T>, предоставляя метод compareTo(T o).
Comparator используется для определения одного или нескольких альтернативных порядков сортировки. Реализует интерфейс Comparator<T>, предоставляя метод compare(T o1, T o2).
Основные отличия представлены в таблице:
| Признак | Comparable | Comparator |
|---|---|---|
| Интерфейс | java.lang.Comparable<T> | java.util.Comparator<T> |
| Метод сортировки | compareTo(T o) | compare(T o1, T o2) |
| Применение | Внутри класса объекта | Отдельный класс или лямбда |
| Расположение логики | В самом классе | В отдельном месте |
| Количество порядков | Только один "естественный" | Множество альтернативных |
| Изменение класса | Требует изменения класса | Не требует изменения класса |
Пример использования Comparable:
java
Пример использования Comparator:
java