Wie man eine Liste in Kotlin kopiert oder klont: Eine vollständige Anleitung
Hallo! Ich habe gerade angefangen, Kotlin nach Java zu lernen, und ich habe ein Problem mit dem Kopieren von Listen.
In Java war ich es gewohnt, so etwas wie `new ArrayList<>(originalList)` zu machen, um eine unabhängige Kopie zu erstellen. Aber in Kotlin habe ich bemerkt, dass eine einfache Zuweisung `val copy = originalList` keine Kopie erstellt, sondern nur eine Referenz auf dasselbe Objekt. Ich habe `originalList.toList()` ausprobiert, aber wenn ich Elemente in der Kopie ändere, wirken sich die Änderungen trotzdem auf das Original aus? Oder verwechsle ich etwas?
Hier ist ein Beispiel, das mich verwirrt:
```kotlin
data class Person(val name: String, var age: Int)
fun main() {
val original = mutableListOf(Person("Alice", 25), Person("Bob", 30))
val copy = original.toList() // das ist doch eine Kopie?
// Versuche zu ändern
(copy as MutableList)[0].age = 26 // Ändere das Alter in der "Kopie"
println(original[0].age) // Gibt 26 aus! Warum hat sich das Original auch geändert?
}
```
Warum erstellt `toList()` keine vollständig unabhängige Kopie? Wie macht man richtig eine tiefe Kopie?