Collectors.toMap()内部提供NPE

问题描述 投票:-2回答:1

我正在尝试在流执行中将数据作为映射收集。

为了确保没有重复的数据,我正在使用merger function,但最终却有NPE。

请参见代码段

streamableList().stream()
    .filter(Objects::nonNull)
    .filter(it-> nonNull(it.getKeyHere()))
    .collect(toMap(it -> it.getKeyHere(),
            it -> it.getValueHere(), (a1, a2) -> a1));

请参见下面的异常

java.lang.NullPointerException: null
        at java.util.HashMap.merge(HashMap.java:1216)
        at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)
        at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
        at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)....
.....and further calls of written code....

有人可以建议为什么收集时失败以及如何解决吗?

java java-8 stream hashmap
1个回答
-1
投票

这意味着streamableList中没有元素,所以即使Objects::nonNull也无济于事,因为它在流之后(以及之前)都无法显示。

显示有关列表创建,生成或填写的更多详细信息,我将更新我的答案。

祝您有美好的一天:)

© www.soinside.com 2019 - 2024. All rights reserved.