具有空值检查的Java 8 Lambda比较器

加伯:

我已经使用lambda表达式对集合进行了排序以进行比较。我必须检查空值,所以我为比较器想出了这个解决方案

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

我已经检查了一些问题,例如this,但是它们都引用了lambda之前的代码。

Java Lambda表达式是否使我有机会避免使用两个“ if”语句?我可以以更简洁的方式执行任务吗?

弗洛:

您可以使用Comparator中的默认实现nullsFirstnullsLast

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章