Java 8避免Lambda表达式NullPointException的方法

方法一

对于字符串的比较,使用非null的字符串的比较方法。

projects
  .stream()
  .filter(project -> "Completed".equalsIgnoreCase(project.getStatus()))
  .collect(Collectors.toList());

不建议使用project.getStatus().equalsIgnoreCase("Completed"),以避免status为null

方法二

使用filter把null的数据过滤掉

projects
  .stream()
  .filter(project -> project.getStatus() != null)
  .filter(project -> project.getStatus().equalsIgnoreCase("Completed"))
  .collect(Collectors.toList());

方法三

在使用前判断null值

personList
  .stream()
  .filter(project -> project.getStatus() != null && project.getStatus().equalsIgnoreCase("In Progress"))
  .collect(Collectors.toList());

版权声明:著作权归作者所有。

相关推荐

Spring定时任务@Scheduled的cron表达式

基本语法cron表达式由6-7个时间域组成,每个时间域之间用空格隔开。格式:<秒> <分> <时> <日期> <月> <星期> <年份> 秒:取值范围0-59分:取值范围0-59时:取值范围0-23日期:每月的的几数,0-31月:取值范围1-12,或英文简

Java 8双冒号::方法引用操作符

Java 8中,双冒号::称为方法引用操作符,我们可以使用它来引用类的方法。::引用类的方法,返回一个函数接口(function interface),这等同于lambda表达式,但与lambda表达式不同的是,lambda表达式需要自定义一个lambda body,而::引用的是一个方法。简单地说函数接口,就是只拥有一个抽象方法的接口,如Runnable。::引用方

Java8使用Lambda把List转换为Map

使用Java8的Collections可以很简便地把List转换为Map以User为例List里的User名字唯一Map<String, User> result =     users.stream().collect(Collectors.toMap(User::getName,   &nbs