提问人:Quentin 提问时间:8/1/2023 最后编辑:Quentin 更新时间:8/1/2023 访问量:28
Kotlin 中的列表分配触发器 ConcurrentModificationException
List allocation trigger ConcurrentModificationException in Kotlin
问:
我有一个函数,它以列表为参数,目的是将此列表与对象中包含的另一个列表合并。
private fun joinListToUpdatedList(listToJoin: List<ExpirationDatesArt>?){
val folderUpdatedListValue : MutableList<ExpirationDatesArt>? = folderUpdatedList.ExpirationDatesArt?.toMutableList()
if(listToJoin != null){
if(folderUpdatedListValue != null){
folderUpdatedListValue.addAll(listToJoin)
val joinedUpdatedList = folderUpdatedListValue.distinctBy { it.cdean }
folderUpdatedList.ExpirationDatesArt = joinedUpdatedList
}
else{
folderUpdatedList.ExpirationDatesArt = listToJoin
}
}
}
当我第一次调用该函数时,我的对象列表为 null,因此它的值是使用 listToJoin 初始化的。
如果我再次调用该函数,无论是立即还是几秒钟后,folderUpdatedListValue 初始化都会崩溃并返回 ConcurrentModificationException 错误。
我不明白为什么,因为我没有删除一个项目,我只是试图访问我感兴趣的对象的列表。
我尝试将 listToJoin 上的 addAll 函数与 folderUpdatedListValue 一起使用,但结果是相同的。
如何使此函数被多次调用?
答: 暂无答案
评论
folderUpdatedList.ExpirationDatesArt
folderUpdatedList.ExpirationDatesArt = (folderUpdatedList.ExpirationDatesArt.orEmpty() + listToJoin.orEmpty()).distinctBy { it.cdean }