带空值检查的Java 8 lambda比较器
我使用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()) ) ); 我已经检查了一些问题,比如,但它们都
(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!!删除问题-编辑:无法执行此操作,因为已回答该问题。。。