stream流当中为什么e-> e.getGroState() != 1会报错,而e-> e.getGroState() == null不会报错 集合当中存在null
时间: 2024-01-12 13:03:17 浏览: 46
centos-stream-release-8.5-2.el8.noarch.rpm
在 Java 8 Stream 中,调用对象的方法时,如果该对象是 null,就会抛出 NullPointerException 异常。因此,当集合中存在 null 元素时,调用 `e.getGroState()` 方法就会出现空指针异常,导致程序报错。
根据你提供的代码,第一个会报错的原因就是因为 `projectAndTeam` 列表中存在为 null 的元素,导致调用 `e.getGroState()` 方法时抛出了空指针异常。而第二个不会报错的原因是因为它过滤的是 `getGroState()` 为 null 的元素,而不是调用 `getGroState()` 方法,所以不会出现空指针异常。
为了避免空指针异常,可以在调用 `e.getGroState()` 方法之前先判断 `e` 是否为 null,例如:
```
List<GetProjectAndTeamOutBO> collectTrue = projectAndTeam.stream()
.filter(e -> e != null && e.getGroState() != 1)
.collect(Collectors.toList());
```
这样就可以避免空指针异常了。
阅读全文