Data Classes in Collections
Verwenden Sie sie in Maps und Sets
Data Classes in Collections ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Datenklassen treffen auf Collections
Da Datenklassen wertbasierte Implementierungen von equals und hashCode besitzen, funktionieren sie in Collections besonders gut.
In dieser Lektion erfahren Sie, wie Datenklassen in Listen, Sets und Maps verwendet werden.
Datenklassen in einer Liste
Speichern Sie Datenobjekte in einer Liste und iterieren Sie wie bei allen anderen Elementen über sie.
Dank ihres lesbaren toString lassen sie sich einfach ausgeben.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Alice", 30), User("Bob", 25))
for (u in users) println(u)
}contains vergleicht Werte
Da equals Werte vergleicht, findet contains ein gleichwertiges Objekt, auch wenn es sich um eine andere Instanz handelt.
Sie benötigen nicht exakt dieselbe Referenz.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Alice", 30))
println(users.contains(User("Alice", 30)))
}Duplikate mit einem Set entfernen
Sets lehnen Duplikate mithilfe von equals und hashCode ab.
Zwei Datenobjekte mit identischen Werten gelten als dasselbe Element.
data class Point(val x: Int, val y: Int)
fun main() {
val set = setOf(Point(1, 1), Point(1, 1), Point(2, 2))
println(set.size)
}Datenklassen als Map-Schlüssel
Eine Datenklasse eignet sich hervorragend als Map-Schlüssel, weil Suchvorgänge auf Wertgleichheit basieren.
Sie können ein Schlüsselobjekt direkt erstellen und den gespeicherten Wert trotzdem finden.
data class Coord(val x: Int, val y: Int)
fun main() {
val grid = mapOf(Coord(0, 0) to "start", Coord(1, 1) to "goal")
println(grid[Coord(1, 1)])
}Datenklassen als Map-Werte
Natürlich können Datenklassen auch die Werte sein und umfangreiche Datensätze modellieren, die über eine ID als Schlüssel angesprochen werden.
Das ist ein gängiges Muster für In-Memory-Suchvorgänge.
data class User(val name: String, val age: Int)
fun main() {
val byId = mapOf(1 to User("Alice", 30))
println(byId[1]?.name)
}Collections filtern
Kombinieren Sie Datenklassen mit Collection-Funktionen wie filter, um Ihre Daten abzufragen.
Die Lambda-Funktion greift direkt auf Eigenschaften zu.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("A", 20), User("B", 40))
val adults = users.filter { it.age >= 30 }
println(adults)
}Auf Eigenschaften abbilden
Verwenden Sie map, um eine Collection von Objekten in eine Collection mit jeweils einer Eigenschaft umzuwandeln.
So extrahieren Sie nur die benötigten Daten.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Alice", 30), User("Bob", 25))
val names = users.map { it.name }
println(names)
}Nach einer Eigenschaft gruppieren
groupBy wandelt eine Liste in eine Map um, deren Schlüssel eine ausgewählte Eigenschaft ist.
Hier werden Benutzer nach ihrer Stadt gruppiert.
data class User(val name: String, val city: String)
fun main() {
val users = listOf(User("A", "Paris"), User("B", "Paris"), User("C", "Rome"))
val byCity = users.groupBy { it.city }
println(byCity["Paris"]?.size)
}Elemente unveränderlich aktualisieren
Um ein Element in einer unveränderlichen Liste zu aktualisieren, wenden Sie map auf die Liste an und verwenden copy für das passende Element.
Das Ergebnis ist eine neue Liste mit einem geänderten Objekt.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Alice", 30), User("Bob", 25))
val updated = users.map { if (it.name == "Bob") it.copy(age = 26) else it }
println(updated)
}Alles zusammenführen
Datenklassen sind ideale Elemente für Collections:
containsund Sets arbeiten wertbasiert- Sie ergeben sichere, vergleichbare Map-Schlüssel
- Sie lassen sich auf natürliche Weise mit
filter,mapundgroupBykombinieren copyermöglicht unveränderliche Aktualisierungen
data class User(val name: String, val age: Int)
fun main() {
val users = setOf(User("Alice", 30), User("Alice", 30))
println(users.size)
println(users.map { it.name })
}Kurzer Test
Testen Sie Ihr Verständnis von Datenklassen in Collections.
Zusammenfassung
Sie haben gelernt, wie Datenklassen in Collections funktionieren:
- Wertgleichheit ermöglicht
contains, Sets und Map-Schlüssel - Sie lassen sich mit
filter,mapundgroupBykombinieren copyunterstützt unveränderliche Aktualisierungen
Damit ist der Kurs zu Datenklassen und Destrukturierung abgeschlossen.
Häufig gestellte Fragen
Ist die Lektion „Data Classes in Collections“ kostenlos?
Ja — der vollständige Text von „Data Classes in Collections“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Data Classes in Collections“?
Verwenden Sie sie in Maps und Sets Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Kotlin Academy zu starten?
Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Data Classes in Collections“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?
Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Data Classes deklarieren
- copy und equals
- Destrukturierende Deklarationen
- Data Classes in Collections