我有一个Map[String,String]
我有一个List[String]
。
我想将它们合并为Tuple[String , String , String]
。
实现这一目标的最有效方法是什么?我试过这样做,但它不起作用:
val queryTimeMap = logToMap(reqSlowQueryData)
val iter = qNumber.iterator
val tup : Tuple3[String , String , String]= queryTimeMap.map(element=> {
(element._1, element._2 , iter.next())
})
答案 0 :(得分:3)
使用for comprehension给出
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))
答案 1 :(得分: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