我有2个列表,如下所述:
val L1 = List [(Int,Int,String)]
val L2 = List [(Int,Int,String)]
我希望在第一个和第二个Int元素的基础上加入这两个列表,结果列表必须有4个元素(Int,Int,String,String)。
val joinedList = List [(Int,Int,String,String)]
其中最后2个String元素将是L1的字符串和L2的字符串。
前: -
val L1 = List((1,1,“one”),(2,2,“two”))
val L2 = List((2,2,“两次”),(3,3,“三次”))
输出列表 - >
val joinedList = List((1,1,“one”,“ - ”),(2,2,“two”,“two”),(3,3,“ - ”,“triice” ))
请建议一种在scala中实现这一目标的方法。
答案 0 :(得分:3)
首先,您希望将其设置为Maps
,以便查找起来更容易,然后您只需map
覆盖所有密钥:
val L1Map = L1.map{case (x,y,z) => ((x,y) -> z)}.toMap
val L2Map = L2.map{case (x,y,z) => ((x,y) -> z)}.toMap
val allKeys = L1Map.keySet ++ L2Map.keySet
val result = allKeys map {case (x,y) =>
(x, y, L1Map.getOrElse((x,y), "--"), L2Map.getOrElse((x,y), "--"))
}
结果,这会为您提供未分类的Set
。如果您需要List
,则可以将其转换回来并根据需要进行排序。