我有两个Object. 两个对象都有一个 id val。我需要通过 id val 检查两个列表,如果 id 相同,则从列表 B 中获取对象并将其覆盖在列表 A 中。在 kotlin 中是否有一种简单的最新方法来实现此结果?
我一直在这里搜索 kotlin 文档和其他比较列表问题,但我没有在文档或此处找到与我的用例匹配的任何内容
我有两个Object. 两个对象都有一个 id val。我需要通过 id val 检查两个列表,如果 id 相同,则从列表 B 中获取对象并将其覆盖在列表 A 中。在 kotlin 中是否有一种简单的最新方法来实现此结果?
我一直在这里搜索 kotlin 文档和其他比较列表问题,但我没有在文档或此处找到与我的用例匹配的任何内容
不确定这是多么有效,但它有效......
样本类
data class SomeClass(val id: Int, val someString: String) {
}
fun transformList(firstList: List<SomeClass>, secondList: List<SomeClass>): List<SomeClass> {
return firstList.map { firstClass ->
val tempItem = secondList.firstOrNull { it.id == firstClass.id }
tempItem ?: firstClass
}
}
基本上,该函数获取两个列表并相互比较每个项目,如果 id 相同,则返回列表 2 中的项目。
fun main() {
val listOne = listOf<SomeClass>(
SomeClass(0, "I am 0, from list 1"),
SomeClass(1, "I am 1, from list 1"),
)
val listTwo = listOf<SomeClass>(
SomeClass(0, "I am 0, from list 2"),
SomeClass(1, "I am 1, from list 2"),
)
println(transformList(listOne, listTwo))
}
输出
[SomeClass(id=0, someString=I am 0, from list 2), SomeClass(id=1, someString=I am 1, from list 2)]