collections - 如何在特定索引中添加新项目?

标签 collections kotlin

我是Kotlin的新用户,我想更新列表中的项目。
我使用以下代码:

var index: Int
    for (record in recordList)
        if (record.id == updatedHeader?.id) {
            index = recordList.indexOf(record)
            recordList.add(index, updatedHeader)
        }

但由于ConcurrentModificationException,它无法执行此操作

最佳答案

假设recordListMutableListval(因此,您想在适当的位置修改记录),则可以使用forEachIndexed查找所需的记录并替换它们。

这没有引起ConcurrentModificationException:

recordList.forEachIndexed { index, record -> 
    if(record.id == updatedHeader?.id) recordList[index] = updatedHeader
}

另一方面,如果将recordList重新定义为一个非可变列表和一个var,则可以使用map重写整个列表:
recordList = recordList.map { if(it.id == updatedHeader?.id) updatedHeader else it }

当然,如果您想将.toMutableList()转换为List,则可以在结尾处调用MutableList

关于collections - 如何在特定索引中添加新项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50321991/

相关文章:

java - 集合列表和子类初始化

java - 重力感应值增加

android - Kotlin -IllegalArgumentException : Parameter specified as non-null is null

java - 检查列表中的对象是否是最后一个(按日期)的最佳方法

java - 如果两个进程同时更新一个 Collection 那么会引发哪个异常?

scala - 如何在Scala中的过滤器, map ,flatMap期间轻松地从一种集合类型转换为另一种集合类型?

java - 在 Webflux 中解决 Pageable

Swift 3 - 集合中的结构

spring - Kotlin 编译器返回 : Unresolved reference: springframework in Spring 5. 0

kotlin - 来自 groovy 的 kotlin 中的数组列表