Подтвердить что ты не робот

Комбинатор Java 8 лямбда с проверкой нулевого значения

Я выполнил сортировку по коллекции, используя выражение лямбда для сравнения. Я должен проверить нулевые значения, поэтому я придумал это решение для компаратора

(a,b)->(
    (a.getStartDate() == null) 
        ? ( (b.getStartDate() == null) ? 0 : -1)
        : ( (b.getStartDate() == null)?1:a.getStartDate().compareTo(b.getStartDate()) )
);

Я уже проверял некоторые вопросы, как это, но все они относятся к предварительно лямбда-коду.

Являются ли лямбда-выражения java, давая мне шанс избежать двух утверждений "если"? Могу ли я выполнить задачу более чистым способом?

4b9b3361

Ответ 1

В Компараторе реализованы nullsFirst nullsLast: nullsFirst или nullsLast:

Comparator.comparing(YourObject::getStartDate, 
  Comparator.nullsFirst(Comparator.naturalOrder())
)