使用stream 进过filter时 报空指针
时间: 2024-12-06 15:13:21 浏览: 19
使用Optional解决空指针问题共2页.pdf.zip
当你在Java中使用Stream API对集合进行过滤(filter)操作时,如果尝试处理的集合是null,就会抛出NullPointerException。这是因为filter方法需要一个非空的流作为基础来进行操作。例如:
```java
List<String> list = null;
list.stream().filter(s -> s.startsWith("a")); // 这里会抛出NullPointerException,因为list是null
```
为了避免这种情况,你需要先检查集合是否为空。如果不为空再进行流的操作,或者提供默认的、安全的处理方式,如使用Optional类:
```java
List<String> list = ...; // 这里假设list已赋值
Optional<List<String>> optionalList = Optional.ofNullable(list);
optionalList.ifPresent(lst -> lst.stream()
.filter(s -> s.startsWith("a"))
.forEach(System.out::println));
```
在这个例子中,`ofNullable()`函数确保了list不是null,然后才进行filter操作。
阅读全文