В дополнение к ответу Рекса, foreach
при GenTraversableOnce
только гарантирует, что все элементы будут проходить итерацией, если вы не прервете его. Черты ниже в цепочке иерархии могут предоставить дополнительные гарантии, например:
TraversableOnce
и его потомки гарантируют, что за один раз будет проходить только один элемент (не гарантируется GenTraversableOnce
!).
Seq
и потомки гарантируют, что элементы будут проходить в том порядке, в котором они хранятся в коллекции.
И так как вы спросили о параллели foreach
...
scala> (1 to 10).par foreach println
4
6
1
3
2
7
5
8
9
10