Часто встречается такой Comparator:
list.sort((a, b) -> a.age() - b.age());
Проблема — переполнение int.
🔴 Например:
Integer.MIN_VALUE - 1
// Integer.MAX_VALUE
Из-за этого компаратор может вернуть неправильный знак, и сортировка нарушит порядок.
🔴 Надёжнее:
list.sort(Comparator.comparingInt(User::age));
🔴 А если нужна дополнительная сортировка:
list.sort(
Comparator.comparingInt(User::age)
.thenComparing(User::name)
);
📌 Для сравнения чисел используйте comparingInt, comparingLong или comparingDouble, а не ручное вычитание.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта