2017-02-24 4 views
0

私は文字列キーとSeq [Int]値のマップを持っています。どのようにしてSeq [Int]を各キーに対して同時に1つのInt値に減らすことができますか?例えばマップ値を同時に減らす

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

は、マップの各キーに対して同時に

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

まで低減されるべきです。

答えて

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) 
0

パラレルコレクションは、マップと範囲の両方に使用できます。

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