繁体   English   中英

如何在Scala中加入两个列表?

[英]How to join two lists in Scala?

我们有两个列表:

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

迭代第一个列表并在映射mb查找第二个列表的值。 .flatMap使条目消失,如果.get返回None

 val mb = b.toMap

 a.flatMap{case (ka,va,vva) => mb.get(ka).map(vb => (ka,va,vva,vb))}

您可以连接列表,然后按元组的第一个元素对它们进行分组:

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

如果l1l2是两个列表: l1:::l2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM