【发布时间】:2017-02-24 19:47:29
【问题描述】:
我有字符串键和 Seq[Int] 值的映射。如何将每个键的 Seq[Int] 同时减少为单个 Int 值。
例如:
Map("xxx" -> (1 to 10), "yyy" -> (100 to 200))
应该简化为
Map("xxx" -> 55, "yyy" -> 15150)
同时针对 Map 中的每个键。
【问题讨论】:
标签: scala concurrency
我有字符串键和 Seq[Int] 值的映射。如何将每个键的 Seq[Int] 同时减少为单个 Int 值。
例如:
Map("xxx" -> (1 to 10), "yyy" -> (100 to 200))
应该简化为
Map("xxx" -> 55, "yyy" -> 15150)
同时针对 Map 中的每个键。
【问题讨论】:
标签: scala concurrency
您可以对 Map 和 Range 使用并行集合 例如
val x= Map("xxx" -> (1 to 10), "yyy" -> (100 to 200))
x.par.map{case (a,b)=>(a,b.par.sum)}
【讨论】:
以下内容应该可以使用 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)
【讨论】: