Collectors.toMap 报错 NullPointerException
时间: 2023-06-28 12:05:24 浏览: 110
在使用 `Collectors.toMap` 方法时,如果出现 `NullPointerException` 异常,很可能是因为集合中的 key 或 value 为 null。在这种情况下,可以添加一个 null 值检查,将 null 值替换为默认值或跳过该项。
以下是一个使用 Java 8 的 `Collectors.toMap` 方法的示例代码:
```
Map<String, String> map = list.stream()
.filter(Objects::nonNull)
.collect(Collectors.toMap(
item -> item.getKey(),
item -> item.getValue(),
(v1, v2) -> v1));
```
在上述示例中,使用 `Objects::nonNull` 过滤掉了 null 值的集合项。如果你不想跳过 null 值,可以使用如下代码来将 null 值替换为默认值:
```
Map<String, String> map = list.stream()
.collect(Collectors.toMap(
item -> item.getKey(),
item -> Optional.ofNullable(item.getValue()).orElse("default"),
(v1, v2) -> v1));
```
在上述示例中,使用 `Optional.ofNullable` 将 null 值替换为默认值 "default"。如果你不需要替换 null 值,也可以直接使用 `Collectors.toMap` 方法:
```
Map<String, String> map = list.stream()
.collect(Collectors.toMap(
item -> item.getKey(),
item -> item.getValue(),
(v1, v2) -> v1));
```
在上述示例中,如果集合中存在 null 值,将会抛出 `NullPointerException`。
阅读全文