尝试利用 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中文网其他相关文章!