Collectors.toMap报空指针
时间: 2023-10-18 09:25:32 浏览: 48
在使用Collectors.toMap方法时,如果集合中存在null值,可能会导致空指针异常。这是因为toMap方法默认不允许出现重复的键,当键重复时,会抛出空指针异常。为了解决这个问题,可以在toMap方法中使用第三个参数来指定当键重复时的处理方式。
例如,可以使用mergeFunction来处理重复键的情况,这样在遇到重复键时,会执行mergeFunction来合并对应的值。具体代码如下所示:
```
Map<String, String> map = list.stream()
.collect(Collectors.toMap(Node::getId, Node::getName, (n1, n2) -> n1, HashMap::new));
```
在这个例子中,我们指定了一个新的HashMap作为toMap方法的第四个参数,当键重复时,会将两个值合并为一个值。
另外,如果集合中存在null值,可以在toMap方法中使用Optional类来处理,确保值不为空。具体代码如下所示:
```
#### 引用[.reference_title]
- *1* *3* [java stream collect toMap nullPointException异常](https://blog.csdn.net/weixin_40493969/article/details/108690223)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [Collectors.toMap方法使用时候value报空指针问题解决](https://blog.csdn.net/hu10131013/article/details/126247475)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]