合并地图和列表以获取元组3?

时间:2014-09-02 12:02:06

标签: scala scala-collections

我有一个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())
    })

2 个答案:

答案 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