Как заменить элемент коллекции 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
}
}
}