Подтвердить что ты не робот

Будут ли Scala параллельные коллекции гарантировать заказ?

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

val a = Array(...)

и я пишу

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

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

4b9b3361

Ответ 1

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

List(1,2,3).par foreach print // could print out 213

Ответ 2

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

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

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