我正在尝试从并行集合转换回常规地图。根据 api,如果我在任何适当定义的并行集合上调用 toMap,它应该返回一个标准 Map,但它在一个扁平化的迭代集合上返回 ParMap。
我有一个
val task: Stream[Future[Iterable[Tuple2[String, String]]]]
我从中得到:
val res: ParSeq[Iterable[Tuple2[String, String]]] = tasks.par.map(f => f.apply())
最后:
val finalresult = res.flatten.toMap
不幸的是,类型finalresult
是ParMap[String, String]
.
另一方面,如果我这样称呼它:
tasks.par.map(f => f.apply()).reduce(_++_).toMap
那么返回类型是Map[String, String]
.
有人能告诉我这是为什么吗?并且(出于好奇)我如何在 scala 不允许我的情况下强制将 a 转换ParMap
为 a Map
?