我有两张地图如下
Map("x" -> Seq("abc"), "z" -> Seq("ghj")) and Map("y" -> Seq("xyz"), "z" -> Seq("pqr"))
我想要的输出是将这两个映射组合成一个序列,这样两个映射中存在的键应该有两个非空序列,而只有一个映射中存在的键应该得到相应的Seq和一个空的Seq。 / p>
Seq(("x", Seq("abc"), Seq()), ("y", Seq(), Seq("xyz")), ("z", Seq("ghj"), Seq("pqr"))
答案 0 :(得分:3)
以下是一种方法:
val result = (m1.keySet ++ m2.keySet).map {
k: String => (k, m1.getOrElse(k, Seq()), m2.getOrElse(k, Seq()))
}
答案 1 :(得分:0)
这是我丑陋的解决方案。
val res1 = map1.map { case (k, v) => if (map2.contains(k)) (k, v, map2(k)) else (k, v, Seq()) }
val res2 = map2.filter { case (k, _) => !map1.contains(k) }.map { case (k, v) => (k, Seq(), v) }
val res3 = res1 ++ res2
res3.toList.sortBy(_._1)