【发布时间】:2022-01-18 14:06:20
【问题描述】:
我有 2 个列表
- 来自服务器的更新列表。
- 来自服务器的本地存储的列表副本
传入的服务器列表数据将替换 localList 中的数据,但在此之前,我需要将 localList 中的数据合并到incomingList,因为本地列表中的某些项目可能已被修改。
我正在按照以下方式进行操作,由于循环,它看起来像 Java。有没有 Kotlin 的方法?
val localList = List<Animal> ...
fun onIncomingData(incomingList : List<Animal>) {
val mutableList = incomingList.toMutableList()
mutableList.forEachIndex{ index, freshItem ->
localList.forEach { localItem ->
if(localItem is Cat && localItem.id == freshItem.id) {
mutableList[index] = freshItem.copy(value1 = localItem.value1, value2 = localItem.value2)
return@forEach
}
}
}
}
【问题讨论】:
-
我正在尝试学习运算符,但我通常很难弄清楚是否有一种方法可以使用我正在使用循环的 kotlin 集合运算符来实现某些目标。因此问题
-
您说您希望传入的列表数据替换本地数据 - 那么为什么要将本地数据复制到传入数据?只需从传入列表中删除您不想替换本地列表的相关项目。
-
@k314159 来自服务器的数据是更新的数据,但是模型对象中有一些本地数据需要复制到与传入列表的 id 匹配的项目中
标签: java kotlin collections operators