如何按插入顺序排列 Scala 并行集合?
How to arrange scala parallel collections in insertion order?
考虑以下示例:
object Test {
def main(args: Array[String]): Unit = {
val vec = Vector(1,2,3,4,5,6)
val x = vec.map(myFunc(_))
x.foreach{println}
val par = vec.par
val parx = par.map(myFunc(_))
parx.foreach{println}
}
def myFunc(a:Int) : Int = {
return a*a
}
}
当我打印 x
时,它遵循插入顺序,而 parx
遵循随机顺序。如何在此处保留插入顺序?我在此示例中使用 Vector,但它也发生在其他集合中,例如 List
。
parx
是一个并行集合,因此对它的所有操作都是并行完成的,包括 foreach
。所以所有的println
操作都是并行执行的,你无法控制它们完成的顺序。
如果您想返回顺序集合,请对该集合调用 .seq
。
parx.seq.foreach(println)
考虑以下示例:
object Test {
def main(args: Array[String]): Unit = {
val vec = Vector(1,2,3,4,5,6)
val x = vec.map(myFunc(_))
x.foreach{println}
val par = vec.par
val parx = par.map(myFunc(_))
parx.foreach{println}
}
def myFunc(a:Int) : Int = {
return a*a
}
}
当我打印 x
时,它遵循插入顺序,而 parx
遵循随机顺序。如何在此处保留插入顺序?我在此示例中使用 Vector,但它也发生在其他集合中,例如 List
。
parx
是一个并行集合,因此对它的所有操作都是并行完成的,包括 foreach
。所以所有的println
操作都是并行执行的,你无法控制它们完成的顺序。
如果您想返回顺序集合,请对该集合调用 .seq
。
parx.seq.foreach(println)