list.stream 流使用 Collectors.toMap 方法转化成 map 时出现空指针异常的问题
Collectors.toMap方法,底层代码限制转化的value值不能为空
·
·
一般我们使用 Collectors.toMap() 方法将一个集合转化成 Map 时,基本都是如下图操作:
(value 如果需要存储当前对象自身,则使用 Function.identity(),而不是 XXX::getXX)
但是执行过后,会有空指针异常的报错问题,经排查,是部分 value 值为 null 导致的;
按住 ctrl,点击 Collectors.toMap() 方法进入,然后继续点击 map.merge() 方法:
可以看到,这里的 value 被声明不能为 null;
(key 可以为 null,但 key 不能重复,多个 null 也算重复;重复也会有异常)
解决方法:
Map<String, String> res = list.stream().collect(HashMap::new,
(map, item) -> map.put(item.getName(), item.getPhone()), HashMap::putAll);
再次执行,问题解决。

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)