Я пытаюсь преобразовать обратно из параллельной коллекции в обычную карту. Согласно api, если я вызываю toMap на любой подходящий параллельный набор, он должен возвращать стандартную карту, но возвращает 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]
.
Может кто-нибудь сказать мне, почему это? И (из любопытства), как я могу заставить преобразовать a ParMap
в Map
, когда scala не позволит мне?