·

一般我们使用 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);

再次执行,问题解决。

在这里插入图片描述

Logo

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

更多推荐