0Pricing
Kotlin Academy · Lektion

Aggregation

sum, count, fold, reduce

Aggregation ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.

Collections aggregieren

Bei der Aggregation wird eine Collection auf einen einzelnen Wert reduziert. Kotlin bietet fertige Funktionen wie sum, count, average und max sowie die allgemeinen Funktionen fold und reduce.

sum und average

sum addiert numerische Elemente, und average gibt ihren Mittelwert als Double zurück.

fun main() {
    val numbers = listOf(2, 4, 6, 8)
    println("Sum: ${numbers.sum()}")
    println("Average: ${numbers.average()}")
}

count

count gibt die Anzahl der Elemente zurück, optional anhand eines Prädikats gefiltert.

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6)
    println("Total: ${numbers.count()}")
    println("Even count: ${numbers.count { it % 2 == 0 }}")
}

maxOrNull und minOrNull

Um Extremwerte sicher zu ermitteln, verwenden Sie maxOrNull und minOrNull. Diese Funktionen geben für leere Collections null zurück.

fun main() {
    val numbers = listOf(3, 7, 2, 9, 4)
    println("Max: ${numbers.maxOrNull()}")
    println("Min: ${numbers.minOrNull()}")
}

sumOf und maxByOrNull

sumOf addiert für jedes Element einen ausgewählten Wert, und maxByOrNull ermittelt das Element mit dem größten ausgewählten Wert.

data class Item(val name: String, val price: Int)

fun main() {
    val items = listOf(Item("a", 10), Item("b", 30), Item("c", 20))
    println("Total price: ${items.sumOf { it.price }}")
    println("Most expensive: ${items.maxByOrNull { it.price }?.name}")
}

Die Funktion fold

fold kombiniert Elemente zu einem einzelnen Ergebnis und beginnt mit einem Initialwert. Die Lambda-Funktion erhält den aktuellen Akkumulator und das aktuelle Element.

fun main() {
    val numbers = listOf(1, 2, 3, 4)
    val total = numbers.fold(100) { acc, n -> acc + n }
    println(total)
}

fold kann den Typ ändern

Da Sie den Initialwert vorgeben, kann fold ein Ergebnis eines beliebigen Typs erzeugen, zum Beispiel einen String.

fun main() {
    val words = listOf("Kotlin", "is", "fun")
    val sentence = words.fold("") { acc, w -> if (acc.isEmpty()) w else "$acc $w" }
    println(sentence)
}

Die Funktion reduce

reduce ähnelt fold, verwendet jedoch das erste Element als Startwert für den Akkumulator. Bei einer leeren Collection wird eine Ausnahme ausgelöst, und der Typ kann nicht geändert werden.

fun main() {
    val numbers = listOf(1, 2, 3, 4)
    val product = numbers.reduce { acc, n -> acc * n }
    println(product)
}

fold im Vergleich zu reduce

Die wichtigsten Unterschiede:

  • fold verwendet einen Initialwert, funktioniert mit leeren Collections und kann einen anderen Typ zurückgeben.
  • reduce beginnt mit dem ersten Element, schlägt bei leeren Collections fehl und behält den Elementtyp bei.
fun main() {
    val empty = emptyList<Int>()
    println(empty.fold(0) { acc, n -> acc + n })
    println("fold is safe on empty lists")
}

runningFold und runningReduce

Wenn Sie jeden Zwischenstand des Akkumulators benötigen, gibt runningFold (und runningReduce) eine Liste der Teilergebnisse zurück.

fun main() {
    val numbers = listOf(1, 2, 3, 4)
    val sums = numbers.runningFold(0) { acc, n -> acc + n }
    println(sums)
}

Einen Aggregator auswählen

Verwenden Sie die spezialisierten Funktionen (sum, count, average, maxOrNull), wenn sie passen. Verwenden Sie fold oder reduce für benutzerdefinierte Kombinationen. Bevorzugen Sie fold, wenn ein Initialwert oder eine Typänderung erforderlich ist.

Kurztest

Was ist der wichtigste Unterschied zwischen fold und reduce?

Zusammenfassung

Sie haben gelernt, mit sum, count, average, maxOrNull und sumOf zu aggregieren. Außerdem haben Sie das allgemeine fold (Initialwert, beliebiger Typ, sicher bei leeren Collections) und reduce (erstes Element als Startwert) kennengelernt. Als Nächstes erstellen Sie Maps und flachen verschachtelte Collections ab.

Häufig gestellte Fragen

Ist die Lektion „Aggregation“ kostenlos?

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

sum, count, fold, reduce 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 3 von 4.

Wie lange dauert die Lektion „Aggregation“?

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