sTg*_*sTg 21 java lambda java-8
我有一个对象,Person它有两个属性Name和Status.从对象列表中我希望过滤掉Person状态为的对象In Progress.这是我的代码:
personList.stream().filter(
t -> t.getStatus().equalsIgnoreCase(
"In Progress")).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
但是代码抛出了一个nullpointerexception错误.当我检查时,我看到一些In Progress状态为的对象具有空值.我们如何在lambda中处理这个问题?
Swe*_*per 42
你可以反转方法的2个"操作数" equals:
"In Progress".equalsIgnoreCase(t.getStatus())
Run Code Online (Sandbox Code Playgroud)
这样既然"In Progress"永远不会为空,就不会有NPE!
The*_*k3t 24
尝试过滤掉具有空状态的对象
personList
.stream()
.filter(t -> t.getStatus() != null)
.filter(t -> t.getStatus().equalsIgnoreCase("In Progress"))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
Nam*_*man 12
您可以链接/合并filter条件以对具有短路条件的非空值进行操作,如下所示:
personList.stream()
.filter(t -> t.getStatus() != null && t.getStatus().equalsIgnoreCase("In Progress"))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1747 次 |
| 最近记录: |