Aggregering
sum, count, fold, reduce
Aggregering er en gratis Kotlin Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Kotlin Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Kotlin Academy-kurset indeholder 4 lektioner i alt.
Aggregering af samlinger
Aggregering reducerer en samling til en enkelt værdi. Kotlin tilbyder færdige funktioner som sum, count, average, max samt de generelle fold og reduce.
sum og average
sum lægger numeriske elementer sammen, og average returnerer deres gennemsnit som en Double.
fun main() {
val numbers = listOf(2, 4, 6, 8)
println("Sum: ${numbers.sum()}")
println("Average: ${numbers.average()}")
}count
count returnerer antallet af elementer, eventuelt filtreret efter et prædikat.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
println("Total: ${numbers.count()}")
println("Even count: ${numbers.count { it % 2 == 0 }}")
}maxOrNull og minOrNull
Hvis du vil finde yderpunkter på en sikker måde, skal du bruge maxOrNull og minOrNull, som returnerer null for tomme samlinger.
fun main() {
val numbers = listOf(3, 7, 2, 9, 4)
println("Max: ${numbers.maxOrNull()}")
println("Min: ${numbers.minOrNull()}")
}sumOf og maxByOrNull
sumOf summerer en valgt værdi for hvert element, og maxByOrNull finder det element, der har den største valgte værdi.
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}")
}Funktionen fold
fold kombinerer elementer til et enkelt resultat med udgangspunkt i en startværdi. Lambdaen modtager den løbende akkumulator og det aktuelle element.
fun main() {
val numbers = listOf(1, 2, 3, 4)
val total = numbers.fold(100) { acc, n -> acc + n }
println(total)
}fold kan ændre typen
Da du angiver startværdien, kan fold opbygge et resultat af en hvilken som helst type, f.eks. en String.
fun main() {
val words = listOf("Kotlin", "is", "fun")
val sentence = words.fold("") { acc, w -> if (acc.isEmpty()) w else "$acc $w" }
println(sentence)
}Funktionen reduce
reduce fungerer ligesom fold, men bruger det første element som startakkumulator. Den kaster en fejl, hvis samlingen er tom, og kan ikke ændre typen.
fun main() {
val numbers = listOf(1, 2, 3, 4)
val product = numbers.reduce { acc, n -> acc * n }
println(product)
}fold kontra reduce
De vigtigste forskelle:
foldtager en startværdi, fungerer på tomme samlinger og kan returnere en anden type.reducestarter med det første element, mislykkes på tomme samlinger og bevarer elementtypen.
fun main() {
val empty = emptyList<Int>()
println(empty.fold(0) { acc, n -> acc + n })
println("fold is safe on empty lists")
}runningFold og runningReduce
Hvis du vil have alle mellemliggende akkumulatorer, returnerer runningFold (og runningReduce) listen med delresultaterne.
fun main() {
val numbers = listOf(1, 2, 3, 4)
val sums = numbers.runningFold(0) { acc, n -> acc + n }
println(sums)
}Valg af aggregeringsfunktion
Brug de specialiserede funktioner (sum, count, average, maxOrNull), når de passer. Vælg fold eller reduce til brugerdefinerede kombinationer, og foretræk fold, når der er brug for en startværdi eller et typeskift.
Hurtig kontrol
Hvad er den vigtigste forskel mellem fold og reduce?
Opsummering
Du har lært at aggregere med sum, count, average, maxOrNull og sumOf samt med den generelle fold (startværdi, enhver type, sikker på tomme samlinger) og reduce (første element som startværdi). Derefter lærer du at opbygge maps og udflade indlejrede samlinger.
Lær Kotlin med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 51
- Lektioner
- 203
Ofte stillede spørgsmål
Er lektionen “Aggregering” gratis?
Ja — alle 3 lektioner i læringssporet Kotlin Academy, inklusive “Aggregering”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Kotlin Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Aggregering”?
sum, count, fold, reduce Du øver dig i Kotlin Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Kotlin Academy?
Der kræves ingen tidligere erfaring. Kotlin Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Aggregering”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Kotlin Academy-lektion?
Ja. Alle Kotlin Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.