Scala的并行系列会保证订购吗?

Sen*_*ess 21 parallel-processing scala parallel-collections

如果我有这个:

val a = Array(...)
Run Code Online (Sandbox Code Playgroud)

我写

a.par.map(e => someFunc(e))
Run Code Online (Sandbox Code Playgroud)

生成的集合是否与非并行集合的顺序相同?

agi*_*eel 23

是的,但函数本身在没有任何特定顺序的情况下执行.

List(1,2,3).par foreach print // could print out 213
Run Code Online (Sandbox Code Playgroud)


Aar*_*rup 16

并行集合维护其非并行等价物的所有合同.

对于map操作保留顺序的集合,例如List,顺序也将由并行保留map.对于map不保留顺序的集合,例如Set,顺序版本中不会保留顺序.

对于无序集合,无法保证并行操作的结果甚至与非并行等效项具有相同的遍历顺序.