case class A(id: Int, name: String)
val a = Seq(A(1, "a1"), A(2, "a2"), A(3, "a3"))
val b = Seq(A(2, "a2"), A(3, "a3"), A(1, "a4"))
println(s"a= ${a}")
println(s"b= ${b}")
val aMap = a.map(x => {
x.id -> x.name
}).toMap
val bMap = b.map(x => {
x.id -> x.name
}).toMap
println(s"aMap= ${aMap}")
println(s"bMap= ${bMap}")
// aMap里面和bMap里面, key如果相同, value就用bMap的
// 注意如果一个都没有, 就报错
val cMap = aMap.map(x => (x._1 -> bMap(x._1)))
println(s"cMap= ${cMap}")
// map转为list(A)
val dList = cMap.map(x => A(x._1, x._2)).toSeq
println(s"dList= ${dList}")
输出
a= List(A(1,a1), A(2,a2), A(3,a3))
b= List(A(2,a2), A(3,a3), A(1,a4))
aMap= Map(1 -> a1, 2 -> a2, 3 -> a3)
bMap= Map(2 -> a2, 3 -> a3, 1 -> a4)
cMap= Map(1 -> a4, 2 -> a2, 3 -> a3)
dList= List(A(1,a4), A(2,a2), A(3,a3))