Mediumcomparator
Что такое Comparator.nullsFirst/nullsLast?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Comparator.nullsFirst(cmp) — обёртка: null элементы идут в начале (меньше всех non-null). nullsLast — null в конце. Без них — NPE при сравнении с null.
Comparator<String> cmp =
Comparator.nullsFirst(Comparator.naturalOrder());
List<String> list = Arrays.asList("b", null, "a");
list.sort(cmp); // [null, "a", "b"]
// Nullable поле в компараторе
Comparator.comparing(
Person::getMiddleName,
Comparator.nullsFirst(Comparator.naturalOrder())
);- Если оба null — равны;
- Если один null —
nullsFirst: null < non-null,nullsLast: null > non-null; - В БД-стиле:
nulls first/nulls lastв ORDER BY; - Использовать всегда, когда поле может быть null и важно поведение при сортировке.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.