Все самое полезное для Java-разработчика в одном канале.
Учиться у нас: clc.to/AATM8w
Для обратной связи: @proglibrary_feeedback_bot
По рекламе: @tproger_sales_bot
РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
Post #7878
870
🧠 Почему a.age() - b.age() может сломать сортировку
Часто встречается такой Comparator:
Проблема — переполнение int.
🔴 Например:
Из-за этого компаратор может вернуть неправильный знак, и сортировка нарушит порядок.
🔴 Надёжнее:
🔴 А если нужна дополнительная сортировка:
📌 Для сравнения чисел используйте comparingInt, comparingLong или comparingDouble, а не ручное вычитание.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
Часто встречается такой 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, а не ручное вычитание.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
- 👍 7
- ❤ 1











