实体Collectors.toMap 报错 NullPointerException
时间: 2023-06-28 10:05:25 浏览: 88
出现 `NullPointerException` 可能是由于 `Collectors.toMap` 方法中的 key 或 value 为 null 所致。你需要在使用该方法时进行一些特殊处理,以避免这种情况发生。
有两种常见的方法来解决这个问题:
1. 使用 `Collectors.toMap` 方法的重载版本,该版本允许你指定一个合并函数,以解决键冲突的情况,并处理 null 值。例如:
```java
Map<String, String> map = list.stream()
.collect(Collectors.toMap(
item -> item.getKey(),
item -> item.getValue(),
(value1, value2) -> value1 == null ? value2 : value1));
```
在上面的代码中,我们定义了一个合并函数,如果 value1 为 null,则返回 value2,否则返回 value1。
2. 在使用 `Collectors.toMap` 方法之前,使用 `filter` 方法过滤掉 null 的元素。例如:
```java
Map<String, String> map = list.stream()
.filter(item -> item.getValue() != null)
.collect(Collectors.toMap(
item -> item.getKey(),
item -> item.getValue()));
```
在上面的代码中,我们使用 `filter` 方法过滤掉值为 null 的元素,然后再使用 `Collectors.toMap` 方法将其转换为 Map。
希望以上方法能够解决你的问题。
阅读全文