【发布时间】:2014-07-07 22:16:14
【问题描述】:
使用示例可能更容易解释我正在尝试做的事情。假设我必须关注两个数组:
int firstArray[] = {1, 2, 3, 4, 5};
int secArray[] = {1, 2, 3, 4, 5};
我想要的是将第二个数组的每个元素 i 添加到第一个数组的每个元素 i 中。当然,创建第三个数组也是可以的。
在这个例子中,结果是:2, 4, 6, 8, 10
我可以在 Java 8 中使用 ParallelStream 以某种方式做到这一点吗?我只能想到使用至少一个索引的解决方案,并且由于并行性(这也违背了目的),它们并没有真正起作用。
这种单线程方法有效:
AtomicInteger i = new AtomicInteger(0);
int resultArray[] = Arrays.stream(firstArray)
.map(a -> a + secArray[i.getAndIncrement()]).toArray();
但如果我尝试使用并行流,结果(当然它们是)随机的并且程序真的很慢。有任何想法吗?
【问题讨论】: