Как заменить элемент коллекции Kotlin?

Есть задача: в существующем списке нужно пересоздать (не изменить) item при определенном условии. Я делаю так

data class Stopwatch(
    val id: Int,
    val startTime:Long,
    var currentMs: Long,
    var isStarted: Boolean =false,
    var isFinish: Boolean =false
)

private val stopwatches = mutableListOf<Stopwatch>()



stopwatches.withIndex().forEach {
            when {
                it.value.id == id -> {
                    stopwatches.set(it.index,Stopwatch(it.value.id, it.value.startTime,currentMs ?: it.value.currentMs, true,it.value.isFinish))
                }
                it.value.isStarted -> {
                    stopwatches.set(it.index,Stopwatch(it.value.id,  it.value.startTime,currentMs ?: it.value.currentMs, false,it.value.isFinish))
                }
                else -> {
                   it
                }
            }
        }

Может есть более лучший способ?


Ответы (1 шт):

Автор решения: Eugene Krivenja

Может вы вот это ищете?

stopwatches.replaceAll {
        when {
            it.id == id -> {
                Stopwatch(it.id, it.startTime,currentMs ?: it.currentMs, true, it.isFinish)
            }
            it.isStarted -> {
                Stopwatch(it.id,  it.startTime,currentMs ?: it.currentMs, false, it.isFinish)
            }
            else -> {
                it
            }
        }
    }
→ Ссылка