0Pricing
Kotlin Academy · Lektion

Warum Sequences?

Lazy Evaluation

Warum Sequences? ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

Was sind Sequences?

Eine Sequence ähnelt einer Collection, verarbeitet Elemente jedoch verzögert. Operationen werden erst ausgeführt, wenn eine Terminaloperation Ergebnisse anfordert, und die Elemente durchlaufen die gesamte Kette nacheinander.

Sofort auswertende Collections

Standardoperationen für Collections werden sofort ausgeführt: Jeder Schritt (filter, map) verarbeitet die Liste vollständig und erstellt eine neue Zwischenliste, bevor der nächste Schritt beginnt.

fun main() {
    val result = listOf(1, 2, 3, 4)
        .map { it * 2 }
        .filter { it > 4 }
    println(result)
}

Die Kosten von Zwischenlisten

Bei großen Datenmengen wird durch die sofortige Verarbeitung bei jedem Schritt eine neue Liste angelegt. Bei vielen Operationen oder Millionen von Elementen werden dadurch Speicher und Zeit verschwendet.

Verzögerte Sequences

Eine Sequence verarbeitet jedes Element durch die gesamte Pipeline, bevor sie mit dem nächsten fortfährt. Es werden keine Zwischenlisten erstellt. Verwenden Sie asSequence() zur Umwandlung.

fun main() {
    val result = listOf(1, 2, 3, 4)
        .asSequence()
        .map { it * 2 }
        .filter { it > 4 }
        .toList()
    println(result)
}

Die Ausführungsreihenfolge sichtbar machen

Durch das Hinzufügen von Ausgaben wird der Unterschied sichtbar. Bei einer Sequence durchläuft jedes Element zuerst map und dann filter, bevor das nächste Element verarbeitet wird.

fun main() {
    listOf(1, 2, 3).asSequence()
        .map { println("map $it"); it * 2 }
        .filter { println("filter $it"); it > 2 }
        .toList()
}

Reihenfolge der sofortigen Ausführung

Vergleichen Sie dies mit einer normalen Liste: map wird zuerst für ALLE Elemente ausgeführt, anschließend wird filter auf alle Elemente angewendet.

fun main() {
    listOf(1, 2, 3)
        .map { println("map $it"); it * 2 }
        .filter { println("filter $it"); it > 2 }
}

Kurzschlussauswertung

Die verzögerte Auswertung ermöglicht eine Kurzschlussauswertung: Operationen wie first oder find werden beendet, sobald ein Ergebnis gefunden wurde, sodass die übrigen Elemente nicht verarbeitet werden müssen.

fun main() {
    val firstBig = (1..1000000).asSequence()
        .map { it * 2 }
        .first { it > 10 }
    println(firstBig)
}

Zwischen- und Terminaloperationen

Sequence-Operationen werden in zwei Arten unterteilt:

  • Zwischenoperationen (map, filter, take): verzögert ausgewertet, geben eine weitere Sequence zurück.
  • Terminaloperationen (toList, sum, first): lösen die Berechnung aus und erzeugen einen Wert.

Ohne Terminaloperation geschieht nichts

Eine Kette aus Zwischenoperationen allein führt keinen Code aus. Bis eine Terminaloperation aufgerufen wird, werden die Lambda-Funktionen nicht ausgeführt.

fun main() {
    val seq = listOf(1, 2, 3).asSequence()
        .map { println("processing $it"); it }
    println("Nothing printed yet")
    seq.toList()
}

Wann Sequences hilfreich sind

Sequences spielen ihre Stärken bei großen Datensätzen, langen Operationsketten oder dann aus, wenn Sie nur einen Teil des Ergebnisses benötigen, etwa den ersten Treffer. Bei kleinen Listen sind gewöhnliche Collections einfacher und genauso schnell.

Eine Vorstellungshilfe

Stellen Sie sich eine Collection als Verarbeitung in horizontalen Ebenen vor, bei der pro Schritt alle Elemente verarbeitet werden, und eine Sequence als Verarbeitung in vertikalen Datenströmen, bei der ein Element alle Schritte durchläuft. Deshalb vermeiden Sequences Zwischenlisten.

Kurztest

Warum können Sequences effizienter sein als Collections?

Zusammenfassung

Sequences verarbeiten Daten verzögert und Element für Element durch eine Kette von Zwischenoperationen. Die Berechnung wird erst durch eine Terminaloperation ausgelöst. Dadurch werden Zwischenlisten vermieden und Kurzschlussauswertungen ermöglicht. Als Nächstes lernen Sie, wie Sie Sequences erstellen.

Häufig gestellte Fragen

Ist die Lektion „Warum Sequences?“ kostenlos?

Ja — der vollständige Text von „Warum Sequences?“ 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 „Warum Sequences?“?

Lazy Evaluation 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 1 von 4.

Wie lange dauert die Lektion „Warum Sequences?“?

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. Warum Sequences?
  2. Sequences erstellen
  3. Lazy-Operationen
  4. Sequences oder Collections
← Zurück zu Kotlin Academy