Como copiar corretamente uma lista (list) em Kotlin: clonagem, cópia e cópia profunda
Olá a todos! Comecei a estudar Kotlin recentemente e me deparei com um problema inesperado ao trabalhar com listas.
Eu tenho uma lista de números `originalList` e quero fazer uma cópia dela para modificar a cópia sem afetar o original. Tentei simplesmente atribuir uma lista à outra:
```kotlin
fun main() {
val originalList = mutableListOf(1, 2, 3, 4, 5)
val copiedList = originalList
copiedList.add(6)
println("Original: $originalList") // [1, 2, 3, 4, 5, 6] — mudou!
println("Copied: $copiedList") // [1, 2, 3, 4, 5, 6]
}
```
Como você pode ver, ao modificar `copiedList`, o `originalList` também muda. Isso acontece porque a variável `copiedList` referencia o mesmo objeto na memória, e não uma nova cópia dos dados.
Eu sei que em Java, para copiar listas, usava-se `new ArrayList<>(originalList)`. Mas existem maneiras mais idiomáticas em Kotlin? Existem métodos como `.clone()`, `.copy()` ou `toList()`? E o que fazer se a lista contiver objetos complexos que