如果我有这个:
val a = Array(...)
我写了
a.par.map(e => someFunc(e))
生成的集合与非并行集合的顺序是否相同?
答案 0 :(得分:23)
是的,但函数本身在没有任何特定顺序的情况下执行。
List(1,2,3).par foreach print // could print out 213
答案 1 :(得分:15)
并行集合维护其非并行等价物的所有合同。
在map
操作保留订单的集合中,例如List
,订单也将由并行map
保留。对于map
不保留顺序的集合,例如Set
,并行版本中不会保留顺序。
对于无序集合,无法保证并行操作的结果甚至与其非并行等效项具有相同的遍历顺序。