2014-09-02 52 views
0

我有一個Map[String,String],我有一個List[String]。 我想將它們兩個合併爲一個Tuple[String , String , String]。 什麼是最有效的方法來實現這一點?我想這樣做,但它不工作:合併地圖和列表以獲取元組3?

val queryTimeMap = logToMap(reqSlowQueryData) 
    val iter = qNumber.iterator 
    val tup : Tuple3[String , String , String]= queryTimeMap.map(element=> { 
     (element._1, element._2 , iter.next()) 
    }) 

回答

3

使用的理解給定

Map("a"->"aa", "b"->"bb") 
m: Map(a -> aa, b -> bb) 

val l = List("x", "y") 
l: List(x, y) 

這樣,

for (((k,v),i) <- m zip l) yield (k,v,i) 
res: List((a,aa,x), (b,bb,y)) 
2

你可以做類似下面的,它使用的視圖,以避免(通過ZIP)創建一箇中間收集:

val map: Map[String, String] = Map("abc"-> "ABC", "def" -> "DEF", "ghi" -> "GHI") 
val list: List[String] = List("One", "Two", "Three") 
val combined: List[Tuple3[String, String, String]] = map.view.zip(list).map(x => (x._1._1, x._1._2, x._2)).toList