带空值检查的Java 8 lambda比较器

带空值检查的Java 8 lambda比较器,lambda,java-8,Lambda,Java 8,我使用lambda表达式实现了对集合的排序。我必须检查空值,所以我为比较器提出了这个解决方案 (a,b)->( (a.getStartDate() == null) ? ( (b.getStartDate() == null) ? 0 : -1) : ( (b.getStartDate() == null)?1:a.getStartDate().compareTo(b.getStartDate()) ) ); 我已经检查了一些问题,比如,但它们都

我使用lambda表达式实现了对集合的排序。我必须检查空值,所以我为比较器提出了这个解决方案

(a,b)->(
    (a.getStartDate() == null) 
        ? ( (b.getStartDate() == null) ? 0 : -1)
        : ( (b.getStartDate() == null)?1:a.getStartDate().compareTo(b.getStartDate()) )
);
我已经检查了一些问题,比如,但它们都是指lambda之前的代码


java lambda表达式是否给了我避免两个“if”语句的机会?我可以以更简洁的方式执行任务吗?

您可以使用以下默认实现:
nullsFirst
nullsLast

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

另请参见,谢谢@Tunaki!!删除问题-编辑:无法执行此操作,因为已回答该问题。。。