並列コレクションから通常のマップに変換し直そうとしています。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が私を許さないときにどうやっParMap
てaを強制的に変換することができますか?Map