gpt4 book ai didi

java - 由并行流填充的 ArrayList 包含空值

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:04:05 25 4
gpt4 key购买 nike

我正在创建一个列表并使用并行流从另一个列表中填充它,意外地目标列表包含空值。它很少发生,而且经常发生。有人有同样的问题吗?

这是一段代码:

Collection<DestinationObj> DestinationObjList = Lists.newArrayList();
SourceObjList.parallelStream().forEach(portalRule -> DestinationObjList.add(new DestinationObj(portalRule)));
return DestinationObjList;

最佳答案

您应该以稍微不同的方式并行收集:

   SourceObjList.parallelStream()
.map(DestinationObj::new)
.collect(Collectors.toCollection(ArrayList::new));

您遇到的问题是 ArrayList 不是线程安全的,因此结果实际上是未定义的。请注意,使用并行流不需要线程安全的集合 - Lists::newArrayList 不是。

关于java - 由并行流填充的 ArrayList 包含空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43230375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com