我们有两个清单:
val a:List[(String, Int, Int)] = List(("apple", 3, 25),("orange", 4, 47))
val b:List[(String, String)] = List(("mango", "25"),("orange", "50"))
加入a和b得到的最佳方法是:
val c : List[(String, Int, Int, String)] = List(("orange", 4, 47, "50"))
答案 0 :(得分:8)
迭代第一个列表并在地图mb
中查找第二个列表的值。如果.flatMap
返回.get
,None
会使条目消失。
val mb = b.toMap
a.flatMap{case (ka,va,vva) => mb.get(ka).map(vb => (ka,va,vva,vb))}
答案 1 :(得分:1)
您可以连接列表,然后按元组的第一个元素对它们进行分组:
val groupedTuples: Map[String, List[(String, String)]] = (a ++ b).groupBy(_._1)
val c: Map[String, List[String]] = groupedTuples.mapValues(_.map(_._2))
这将导致
Map(mango -> List(25), orange -> List(4, 50), apple -> List(3))
答案 2 :(得分:-1)
如果l1
和l2
是两个列表:l1:::l2
。