在 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)
}
我有 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)
}