【发布时间】:2017-09-16 14:53:08
【问题描述】:
我正在研究 Java8,当我在 hashmap 中使用 null 时发现收集器失败。
我得到空指针异常。我的查询是如果哈希映射允许空值,那么为什么我在这里得到空指针。
public class Test {
public static void main(String[] args) {
HashMap<String, String> m = new HashMap<>();
m.put("abc", null);
m.entrySet().parallelStream().collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));
}
}
【问题讨论】:
-
toMap的这种行为可能应该在 Javadoc 中得到澄清。 JBS 中有一个未解决的错误:bugs.openjdk.java.net/browse/JDK-8148463 -
作为旁注,不要盲目地使用
parallelStream()。对于小型集合和/或简单任务,它会比顺序流慢得多。将单个元素映射收集到另一个映射是一项并行处理毫无意义的任务……