0Pricing
Kotlin Academy · Lektion

Sequences oder Collections

Wann welche Variante besser ist

Sequences oder 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.

Sequenzen und Collections

Sowohl Sequenzen als auch Collections bieten dieselben funktionalen Operationen, werten sie aber unterschiedlich aus. Wenn Sie wissen, wann welche Variante Vorteile bietet, können Sie effizienten und gut lesbaren Code schreiben.

Rückblick auf eifrige Collections

Collections sind eifrig: Jede Operation verarbeitet alle Elemente und erzeugt sofort eine neue Collection. Bei kleinen Datenmengen ist das einfach und schnell.

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

Rückblick auf verzögerte Sequenzen

Sequenzen sind verzögert: Operationen erstellen eine Pipeline, die erst beim Konsumieren elementweise ausgeführt wird. Dadurch werden Zwischen-Collections vermieden.

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

Wann Collections Vorteile bieten

Bei kleinen Collections und kurzen Verkettungen sind Collections normalerweise schneller und übersichtlicher. Sequenzen verursachen pro Element zusätzlichen Aufwand durch Iteratoraufrufe, der ihre Vorteile bei winzigen Datenmengen überwiegen kann.

Wann Sequenzen Vorteile bieten

Sequenzen sind im Vorteil, wenn die Datenmenge groß, die Verkettung lang ist oder Sie nur einen Teil des Ergebnisses benötigen, etwa den ersten Treffer oder die ersten N Elemente. Sie vermeiden das Erstellen großer Zwischenlisten und beenden die Verarbeitung frühzeitig.

fun main() {
    val firstEvenSquare = (1..1000000).asSequence()
        .map { it * it }
        .first { it % 2 == 0 }
    println(firstEvenSquare)
}

Den Unterschied messen

Dieses Beispiel mit einem großen Wertebereich zeigt, wie eine Sequenz das Erstellen einer Zwischenliste mit einer Million Elementen vermeidet, die die eifrige Variante erzeugen würde.

fun main() {
    val seqResult = (1..1000).asSequence()
        .filter { it % 2 == 0 }
        .map { it * 3 }
        .take(3)
        .toList()
    println(seqResult)
}

Speicherbedarf

Eifrige Verkettungen halten alle Zwischenlisten gleichzeitig im Speicher. Sequenzen lassen nur das aktuelle Element durch die Pipeline fließen, sodass der maximale Speicherbedarf auch bei langen Pipelines gering bleibt.

Vorteil des vorzeitigen Abbruchs

Wenn eine Abschlussoperation frühzeitig fertig werden kann, etwa first, find oder any, überspringen Sequenzen die übrigen Elemente. Eifrige Collections hätten dagegen bereits alle Elemente verarbeitet.

fun main() {
    val found = (1..100).asSequence()
        .map { println("checking $it"); it }
        .any { it == 3 }
    println("Found: $found")
}

Auf zustandsbehaftete Operationen achten

Operationen wie sorted, distinct und groupBy benötigen alle Elemente und verringern daher den Vorteil der verzögerten Auswertung. Eine Pipeline, die von diesen Operationen dominiert wird, profitiert möglicherweise nicht von einer Sequenz.

Eine praktische Richtlinie

Als Faustregel gilt: Verwenden Sie standardmäßig Collections, wenn Übersichtlichkeit im Vordergrund steht. Wechseln Sie zu einer Sequenz, wenn Sie große Datenmengen verarbeiten, viele Operationen verketten oder nur einen kleinen Ausschnitt des Ergebnisses benötigen. Messen Sie immer nach, wenn die Leistung entscheidend ist.

Gleiche API, andere Verarbeitung

Da beide dieselben Operationsnamen verwenden, können Sie normalerweise durch Hinzufügen oder Entfernen von asSequence() und einer abschließenden Operation toList() wechseln. Dadurch lässt sich die Leistung mit geringem Risiko vergleichen.

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

Kurzer Test

In welcher Situation wird eine Sequenz eine Collection höchstwahrscheinlich übertreffen?

Zusammenfassung

Collections sind eifrig und eignen sich am besten für kleine Datenmengen und übersichtlichen Code. Sequenzen sind verzögert und eignen sich dank fehlender Zwischenlisten und vorzeitiger Abbrüche am besten für große Datenmengen, lange Verkettungen oder Teilergebnisse. Achten Sie auf zustandsbehaftete Operationen. Beide verwenden dieselbe API, daher ist ein Wechsel einfach. Damit ist der Kurs zu Sequenzen abgeschlossen.

Häufig gestellte Fragen

Ist die Lektion „Sequences oder Collections“ kostenlos?

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

Wann welche Variante besser ist 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 „Sequences oder 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

  1. Warum Sequences?
  2. Sequences erstellen
  3. Lazy-Operationen
  4. Sequences oder Collections
← Zurück zu Kotlin Academy