当list1和list2有相同的student id的时候,以list1为准,更新list2, 得到list2的结果为:
Student(2, "Bob"),
Student(4, "Dave"),
Student(1, "Alice"),
Student(1, "Tom")
Student(1, "Jimmy"),
class Test {
data class Student(val id: Int, val name: String)
fun main() {
val list1 = listOf(
Student(1, "Alice"),
Student(1, "Tom"),
Student(1, "Jimmy"),
Student(2, "Bob"),
Student(3, "Charlie")
)
val list2 = listOf(
Student(2, "Updated Bob"),
Student(4, "Dave"),
Student(1, "Updated Tom"),
Student(1, "Updated Alice")
)
val resultMap1 = mutableMapOf<Int, MutableList<Student>>()
val resultMap2 = mutableMapOf<Int, MutableList<Student>>()
// 添加 list1 中的元素到 resultMap1
list1.forEach { student ->
resultMap1.getOrPut(student.id) { mutableListOf() }.add(student)
}
// 添加 list2 中的元素到 resultMap2
list2.forEach { student ->
resultMap2.getOrPut(student.id) { mutableListOf() }.add(student)
}
resultMap2.keys.forEach{ id->
resultMap1[id]?.apply { resultMap2[id] = this }
}
val updatedList = resultMap2.values.flatten()
println(updatedList)
}
}