Conversion from scala parallel collection to regular collection

Viewed 7027

I'm trying to convert back from a parallel collection to a regular map. According to the api, if I call toMap on any appropriately defined parallel collection, it's supposed to return a standard Map, but it's returning ParMap over a flattened collection of iterables.

I have a

val task: Stream[Future[Iterable[Tuple2[String, String]]]]

And from which I get:

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

Finally:

val finalresult = res.flatten.toMap

Unfortunately, the type of finalresult is ParMap[String, String].

On the other hand, if I call it like:

tasks.par.map(f => f.apply()).reduce(_++_).toMap

then the return type is Map[String, String].

Can someone tell me why this is? And (out of curiosity) how I can force convert a ParMap to a Map when scala won't let me?

1 Answers
Related