Collectors.toMap的value存在null怎么处理
时间: 2023-10-19 10:06:54 浏览: 110
如果Collectors.toMap的value存在null,可以使用下面两种方式进行处理:
1. 使用Optional.ofNullable()方法将value转换为Optional对象,如果value为null,则返回Optional.empty()。然后通过map()方法将Optional对象转换为期望的值。
例如:
```
Map<String, String> map = new HashMap<>();
map.put("key1", null);
map.put("key2", "value2");
Map<String, String> result = map.entrySet()
.stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
e -> Optional.ofNullable(e.getValue()).map(v -> v.toUpperCase()).orElse("")
));
System.out.println(result); // 输出: {key1="", key2="VALUE2"}
```
2. 使用Collectors.toMap()方法的第三个参数,指定当value为null时的默认值。
例如:
```
Map<String, String> map = new HashMap<>();
map.put("key1", null);
map.put("key2", "value2");
Map<String, String> result = map.entrySet()
.stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(v1, v2) -> v1 != null ? v1 : v2.toUpperCase()
));
System.out.println(result); // 输出: {key1="VALUE2", key2="value2"}
```
上述两种方式根据具体情况选择适合的方式进行处理。
阅读全文