这个问题源于另一个问题的答案,其中建议使用map和reduce并行计算总和。
在那个问题中有一个
所以我的问题是:是否存在一些类似于我在这里描述的
在那个问题中有一个
complexCalculation(e)
,但现在我想知道如何进一步并行化,将计算分为两部分,使得complexCalculation(e)
=part1(e)
*part2(e)
。我想知道是否可能在集合上并发地计算part1和part2(再次使用map()
),然后压缩两个结果流,以便第i个元素与函数*相结合,从而得到与映射complexCalculation(e)
在该集合上的结果流相等的结果流。在代码中,这看起来像:Stream map1 = bigCollection.parallelStream().map(e -> part1(e));
Stream map2 = bigCollection.parallelStream().map(e -> part2(e));
// preferably map1 and map2 are computed concurrently...
Stream result = map1.zip(map2, (e1, e2) -> e1 * e2);
result.equals(bigCollection.map(e -> complexCalculation(e))); //should be true
所以我的问题是:是否存在一些类似于我在这里描述的
zip
函数的功能?