Будут ли параллельные коллекции Scala гарантировать порядок? - PullRequest
20 голосов
/ 11 июля 2011

Если у меня есть это:

val a = Array(...)

и я пишу

a.par.map(e => someFunc(e))

Будет ли итоговая коллекция в том же порядке, что и непараллельная коллекция?

Ответы [ 2 ]

23 голосов
/ 11 июля 2011

Да, но сама функция выполняется без какого-либо определенного порядка.

List(1,2,3).par foreach print // could print out 213
15 голосов
/ 11 июля 2011

Параллельные коллекции поддерживают все контракты своих непараллельных эквивалентов.

В коллекциях, в которых операция map сохраняет порядок, например List, порядок будет сохраняться параллелью map.Для коллекций, в которых map не сохраняет порядок, например Set, порядок не будет сохранен в параллельной версии.

При неупорядоченных коллекциях нет гарантии, что результат параллельной операции будет иметь тот же порядок обхода, что и его непараллельный эквивалент.

...