Встречается на собеседованиях • сегодня
Как Comparator и Comparable связаны с коллекциями
Оба интерфейса используются для сортировки коллекций:
1. **Comparable** (`compareTo(T o)`) - естественный порядок сортировки. Класс реализует его, если объекты имеют "естественный" способ сравнения (например, String по алфавиту, числа по возрастанию). Используется в `Collections.sort()` без компаратора.
```java
class Person implements Comparable {
@Override
public int compareTo(Person o) {
return this.name.compareTo(o.name);
}
}
```
2. **Comparator** (`compare(T o1, T o2)`) - внешний порядок. Позволяет задать разные способы сортировки для одного класса. Передается как параметр в `Collections.sort()` или `TreeSet` конструктор.
```java
Comparator ageComparator = (p1, p2) -> p1.getAge() - p2.getAge();
Collections.sort(people, ageComparator);
```
Ключевое отличие: Comparable - внутренняя логика сравнения, Comparator - гибкие внешние правила. Оба активно используются в коллекциях для управления порядком элементов.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы