0Pricing
Kotlin Academy · Lektion

Assoziation und Abflachung

associate und flatMap

Assoziation und Abflachung 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.

Zuordnen und Abflachen

Zwei weitere leistungsfähige Werkzeuge für Collections: Die Funktionen der associate-Familie erstellen Maps aus einer Liste, und flatMap beziehungsweise flatten wandeln verschachtelte Collections in eine einzige flache Collection um.

Die Funktion associateWith

associateWith verwendet jedes Element als Schlüssel und berechnet seinen Wert mithilfe einer Lambda-Funktion. Das Ergebnis ist eine Map.

fun main() {
    val words = listOf("a", "bb", "ccc")
    val lengths = words.associateWith { it.length }
    println(lengths)
}

Die Funktion associateBy

associateBy funktioniert umgekehrt: Die Funktion berechnet den Schlüssel aus jedem Element und behält das Element als Wert bei.

data class User(val id: Int, val name: String)

fun main() {
    val users = listOf(User(1, "Ann"), User(2, "Bob"))
    val byId = users.associateBy { it.id }
    println(byId[2]?.name)
}

Die Funktion associate

Mit dem allgemeinen associate können Sie Schlüssel und Wert gleichzeitig erstellen, indem Sie für jedes Element ein Pair zurückgeben.

fun main() {
    val names = listOf("Ann", "Bob", "Cy")
    val map = names.associate { it to it.length }
    println(map)
}

Doppelte Schlüssel

Wenn zwei Elemente in einer associate-Funktion denselben Schlüssel erzeugen, gewinnt das letzte Element. Halten Sie die Schlüssel eindeutig, wenn Sie jedes Element benötigen.

fun main() {
    val words = listOf("apple", "ant", "bee")
    val byFirst = words.associateBy { it.first() }
    println(byFirst)
}

Die Funktion flatten

flatten nimmt eine Collection aus Collections und fügt sie zu einer einzigen flachen Liste zusammen.

fun main() {
    val nested = listOf(listOf(1, 2), listOf(3, 4), listOf(5))
    val flat = nested.flatten()
    println(flat)
}

Die Funktion flatMap

flatMap wandelt jedes Element in eine Collection um und flacht anschließend alle diese Collections zu einer einzigen Liste ab. Die Funktion kombiniert map und flatten in einem Schritt.

fun main() {
    val words = listOf("hi", "ok")
    val chars = words.flatMap { it.toList() }
    println(chars)
}

flatMap mit verschachtelten Daten

flatMap eignet sich ideal, um verschachtelte Strukturen in eine einzige Folge von Elementen zu erweitern.

data class Team(val members: List<String>)

fun main() {
    val teams = listOf(Team(listOf("Ann", "Bob")), Team(listOf("Cy")))
    val everyone = teams.flatMap { it.members }
    println(everyone)
}

flatMap im Vergleich zu map

Verwenden Sie map, wenn jedes Element genau ein Ergebnis erzeugt. Verwenden Sie flatMap, wenn jedes Element eine Collection erzeugt und Sie alle Collections zu einer einzigen flachen Liste zusammenführen möchten.

fun main() {
    val numbers = listOf(1, 2, 3)
    val mapped = numbers.map { listOf(it, it * 10) }
    val flat = numbers.flatMap { listOf(it, it * 10) }
    println("map: $mapped")
    println("flatMap: $flat")
}

associate und flatMap kombinieren

Diese Werkzeuge treten in Datenpipelines häufig gemeinsam auf: Flachen Sie verschachtelte Daten ab und ordnen Sie sie anschließend in einer Lookup-Map für schnellen Zugriff zu.

data class Order(val items: List<String>)

fun main() {
    val orders = listOf(Order(listOf("pen", "ink")), Order(listOf("pen")))
    val counts = orders.flatMap { it.items }.groupingBy { it }.eachCount()
    println(counts)
}

Wann welche Funktion verwendet wird

Wählen Sie associateBy/associateWith, um schnelle Lookup-Maps aus Listen zu erstellen, und flatMap/flatten, um verschachtelte Collections zusammenzuführen. Dadurch können Sie prägnant und übersichtlich mit strukturierten Daten arbeiten.

Kurztest

Was macht flatMap?

Zusammenfassung

Sie haben gelernt, mit associate, associateBy und associateWith Maps zu erstellen (der letzte doppelte Schlüssel gewinnt) und mit flatten und flatMap Verschachtelungen aufzulösen. Damit verfügen Sie über alle wichtigen Werkzeuge für Collections zum Umwandeln, Organisieren, Aggregieren und Umstrukturieren von Daten.

Häufig gestellte Fragen

Ist die Lektion „Assoziation und Abflachung“ kostenlos?

Ja — der vollständige Text von „Assoziation und Abflachung“ 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 „Assoziation und Abflachung“?

associate und flatMap 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 „Assoziation und Abflachung“?

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

  1. Filtern und Zuordnen
  2. Gruppieren und Partitionieren
  3. Aggregation
  4. Assoziation und Abflachung
← Zurück zu Kotlin Academy