相关疑难解决方法(0)

从scala并行集合转换为常规集合

我正试图从并行集合转换回常规地图.根据api,如果我在任何适当定义的并行集合上调用map,它应该返回一个标准的Map,但是它会在一个扁平的iterables集合上返回ParMap.

我有一个

val task: Stream[Future[Iterable[Tuple2[String, String]]]]
Run Code Online (Sandbox Code Playgroud)

从中得到:

val res: ParSeq[Iterable[Tuple2[String, String]]] = tasks.par.map(f => f.apply())
Run Code Online (Sandbox Code Playgroud)

最后:

val finalresult = res.flatten.toMap
Run Code Online (Sandbox Code Playgroud)

不幸的是,类型finalresultParMap[String, String].

另一方面,如果我称之为:

tasks.par.map(f => f.apply()).reduce(_++_).toMap
Run Code Online (Sandbox Code Playgroud)

那么返回类型是Map[String, String].

谁能告诉我为什么会这样?和(出于好奇),我怎么可以强制转换ParMapMap时斯卡拉不会放过我?

parallel-processing scala scala-collections

26
推荐指数
1
解决办法
5505
查看次数