在 Kotlin 中合并两个相同类型的列表

Merging two lists of the same type in Kotlin

我有 2 个包含相同类型对象的列表:

[{"id":1, "val": "A"}, {"id":2, val:"B"}]

[{"id":2, "val": "C"}, {"id":3, val:"D"}]

我需要以特定方式将列表 2 合并到列表 1:将 1 中的现有对象更改为与 2 中具有相同 ID 的对象的新值(如果存在)。

对于这个例子结果应该是这样的:

[{"id":1, "val": "A"}, {"id":2, val:"C"}]

在 Kotlin 中是否有任何高效智能的方式来处理它?

fun main() {
    data class Obj(val id: Int, val value: String)
    val first = listOf(Obj(1, "A"), Obj(2, "B"))
    val second = listOf(Obj(2, "C"), Obj(3, "D"))
    val buf = second.associateBy { it.id }
    val result = first.map { buf[it.id] ?: it }
    println(result)
}