Новичок Котлин здесь. Как взять список и не изменять его, создать второй (неизменный) список с одним обновленным элементом по определенному индексу?
Я думаю о двух путях, которые кажутся похожими на то, что они могут понести удары производительности, мутировать базовый объект или и то, и другое.
data class Player(val name: String, val score: Int = 0)
val players: List<Player> = ...
// Do I do this?
val updatedPlayers1 = players.mapIndexed { i, player ->
if (i == 2) player.copy(score = 100)
else player
}
// Or this?
val updatedPlayer = players[2].copy(score = 100)
val mutable = players.toMutableList()
mutable.set(2, updatedPlayer)
val updatedPlayers2 = mutable.toList()
Если нет возможности выполнить этот способ, существует ли более подходящая структура данных в stdlib или другой библиотеке Kotlin? Котлин, похоже, не имеет векторов.