Collections Начинающий

Создавайте читаемые и компонуемые правила упорядочивания с помощью фабричных методов Comparator.

✕ Anonymous comparator
people.sort(new Comparator<Person>() {
    @Override
    public int compare(Person a, Person b) {
        int byName = a.name().compareTo(b.name());
        return byName != 0 ? byName : Integer.compare(a.age(), b.age());
    }
});
✓ Java 8+
people.sort(Comparator.comparing(Person::name)
        .thenComparingInt(Person::age));
Заметили проблему в этом коде? Сообщите нам.
🧩

Компонуемость

Правила упорядочивания естественно объединяются в цепочки.

👁

Проще проверять

Ключи сортировки и их приоритет указаны явно.

🐛

Безопасные сравнения

Специализированные вспомогательные методы позволяют избежать ненадёжных арифметических компараторов.

Старый подход
Анонимный Comparator
Современный подход
Фабрики Comparator
Начиная с JDK
8
Сложность
Начинающий
Фабрики Comparator и текучее задание порядка
Доступно

Доступно начиная с JDK 8 (март 2014)

Фабрики Comparator декларативно выражают порядок и позволяют компоновать первичные и вторичные ключи без написанных вручную условных переходов.