首页 > Java > java教程 > 为什么 Collectors.toMap() 会抛出带有 null 条目值的 NullPointerException?

为什么 Collectors.toMap() 会抛出带有 null 条目值的 NullPointerException?

Mary-Kate Olsen
发布: 2024-11-11 11:46:03
原创
660 人浏览过

Why does Collectors.toMap() throw a NullPointerException with null entry values?

Collectors.toMap() 中具有 Null 条目值的 NullPointerException

尝试利用 Collectors.toMap() 将对象流转换为映射时,出现 NullPointerException如果流中的一个或多个值为 null,则可能会出现这种情况。考虑到映射能够保存空值,这种行为可能看起来违反直觉。

此异常是由于 OpenJDK 中的一个已知错误而发生的。为了缓解此问题,可以使用一种解决方法:

Map<Integer, Boolean> collect = list.stream()
        .collect(HashMap::new, (m,v)->m.put(v.getId(), v.getAnswer()), HashMap::putAll);
登录后复制

虽然不太优雅,但此方法有效地解决了该问题。生成的映射将包含流中的键值对,包括任何空值。

请注意,此解决方法有一个限制:如果流包含具有不同值的重复键,则映射将默默地替换现有的与新的价值。要解决此问题,请参阅评论部分中提供的链接。

以上是为什么 Collectors.toMap() 会抛出带有 null 条目值的 NullPointerException?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板