1. case class A(id: Int, name: String)
    2. val a = Seq(A(1, "a1"), A(2, "a2"), A(3, "a3"))
    3. val b = Seq(A(2, "a2"), A(3, "a3"), A(1, "a4"))
    4. println(s"a= ${a}")
    5. println(s"b= ${b}")
    6. val aMap = a.map(x => {
    7. x.id -> x.name
    8. }).toMap
    9. val bMap = b.map(x => {
    10. x.id -> x.name
    11. }).toMap
    12. println(s"aMap= ${aMap}")
    13. println(s"bMap= ${bMap}")
    14. // aMap里面和bMap里面, key如果相同, value就用bMap的
    15. // 注意如果一个都没有, 就报错
    16. val cMap = aMap.map(x => (x._1 -> bMap(x._1)))
    17. println(s"cMap= ${cMap}")
    18. // map转为list(A)
    19. val dList = cMap.map(x => A(x._1, x._2)).toSeq
    20. println(s"dList= ${dList}")

    输出

    1. a= List(A(1,a1), A(2,a2), A(3,a3))
    2. b= List(A(2,a2), A(3,a3), A(1,a4))
    3. aMap= Map(1 -> a1, 2 -> a2, 3 -> a3)
    4. bMap= Map(2 -> a2, 3 -> a3, 1 -> a4)
    5. cMap= Map(1 -> a4, 2 -> a2, 3 -> a3)
    6. dList= List(A(1,a4), A(2,a2), A(3,a3))