我正试图从并行集合转换回常规地图.根据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)
不幸的是,类型finalresult是ParMap[String, String].
另一方面,如果我称之为:
tasks.par.map(f => f.apply()).reduce(_++_).toMap
Run Code Online (Sandbox Code Playgroud)
那么返回类型是Map[String, String].
谁能告诉我为什么会这样?和(出于好奇),我怎么可以强制转换ParMap到Map时斯卡拉不会放过我?