Нулевой безопасный компаратор с двумя сравнениями в Java - PullRequest
1 голос
/ 20 марта 2019

У меня есть список с номерами.Эти комнаты могут использоваться человеком на определенную дату или могут быть использованы в будущем без указания конкретной даты.Сначала все прошло очень хорошо, но, поскольку мы допускаем нулевые значения для дат, я больше не могу использовать этот метод сортировки.Самое главное, что он должен быть сначала отсортирован по человеку, а затем должны быть указаны даты.Нулевые значения должны быть в нижней части списка каждого человека.Я попробовал немного с nullFirst (), но не смог написать безошибочный код: D В большинстве примеров в Интернете есть только одно сравнение вместо двух.(Человек никогда не будет нулевым)

roomTOs.sort(Comparator
            .comparing(
                    personTO::getPersonName)
            .thenComparing(
                    personTO::getUsedDate));

1 Ответ

2 голосов
/ 20 марта 2019

Если я правильно понял, вы хотите что-то вроде этого:

roomTOs.sort(Comparator
            .comparing(
                    personTO::getPersonName)
            .thenComparing(
                    personTO::getUsedDate, Comparator.nullsLast(Comparator.naturalOrder()))
            );
...