gpt4 book ai didi

java - 从 Java 8 中的并行流中收集

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:34 24 4
gpt4 key购买 nike

我想接受一个输入并在其上应用并行流,然后我想输出为列表。输入可以是我们可以应用流的任何列表或任何集合。

我在这里担心的是,如果我们想要输出作为映射它们,我们有一个来自 java 的选项,就像

list.parallelStream().collect(Collectors.toConcurrentMap(args))

但是我看不到以线程安全方式从并行流中收集以提供列表作为输出的选项。我在那里看到了另一个可以使用的选项

list.parallelStream().collect(Collectors.toCollection(<Concurrent Implementation>))

这样我们就可以在collect方法中提供各种并发的实现。但我认为 java.util.concurrent 中只有 CopyOnWriteArrayList List 实现。我们可以在这里使用各种队列实现,但这些不会像列表那样。我在这里的意思是我们可以通过解决方法来获取列表。

如果我想要输出为列表,你能指导我最好的方法是什么吗?

注意:我找不到与此相关的任何其他帖子,任何引用都会有所帮助。

最佳答案

用于接收正在收集的数据的Collection 对象不需要是并发的。您可以给它一个简单的 ArrayList

这是因为并行流中的值集合实际上并未收集到单个 Collection 对象中。每个线程将收集自己的数据,然后所有子结果将合并到一个最终的Collection对象中。

这一切都在 Collector 中有详细记录javadoc,Collector 是您提供给 collect() 的参数方法:

<R,A> R collect(Collector<? super T,A,R> collector)

关于java - 从 Java 8 中的并行流中收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44083445/

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