list.stream().mapToInt(Integer::intValue).sum()报错空指针
时间: 2024-10-28 12:12:13 浏览: 15
[] - 2023-10-21 10 个 Java Stream 顶级技巧,大量简化代码!.pdf
当你遇到 `list.stream().mapToInt(Integer::intValue).sum()` 这样的代码报空指针异常,通常是因为你在尝试对一个空列表 (`list` 可能是 null) 进行流式操作。`stream()` 方法返回的是一个 Stream 对象,而 `mapToInt()` 和 `sum()` 都是基于这个流链进行操作的。
`Integer::intValue` 是一个方法引用,用于将列表中的每个元素转换为整数。如果 `list` 里没有任何元素,`mapToInt()` 将会试图处理一个空集合,这时就会抛出空指针异常,因为你不能对一个空集合应用这个函数。
解决这个问题的关键是在调用 `stream()` 或其他方法之前,先检查 `list` 是否为空:
```java
List<Integer> list = ...; // 确保 list 不为null
OptionalInt sum = list.stream()
.filter(Objects::nonNull) // 过滤掉null值
.mapToInt(Integer::intValue)
.sum();
```
或者直接使用 `if (list != null && !list.isEmpty())` 的条件判断。如果 `list` 为空,就避免了后续的操作,从而防止空指针异常。
阅读全文