同时减少Map值

时间:2017-02-24 19:47:29

标签: scala concurrency

我有String键和Seq [Int]值的Map。如何为每个键同时将Seq [Int]减少为单个Int值。

例如:

 Map("xxx" -> (1 to 10), "yyy" -> (100 to 200)) 

应该简化为

 Map("xxx" -> 55, "yyy" -> 15150)

同时为地图中的每个键。

2 个答案:

答案 0 :(得分:0)

下面应该使用Futures。

import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.{Future, Await}
import scala.concurrent.duration.Duration

val data = Map("xxx" -> (1 to 10), "yyy" -> (100 to 200))
Await.result(Future.sequence(data.map({ case (x,y) => Future { x -> y.sum } })), Duration.Inf).toMap

res1: scala.collection.immutable.Map[String,Int] = Map(xxx -> 55, yyy -> 15150)

答案 1 :(得分:0)

您可以为Map和Range使用并行集合 例如

val x= Map("xxx" -> (1 to 10), "yyy" -> (100 to 200)) 
x.par.map{case (a,b)=>(a,b.par.sum)}