Aggregazione
sum, count, fold, reduce
Aggregazione è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Kotlin Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kotlin Academy include 4 lezioni in totale.
Aggregazione delle raccolte
L'aggregazione riduce una raccolta a un singolo valore. Kotlin fornisce funzioni già pronte come sum, count, average, max e le funzioni generiche fold e reduce.
sum e average
sum somma gli elementi numerici, mentre average restituisce la loro media come Double.
fun main() {
val numbers = listOf(2, 4, 6, 8)
println("Sum: ${numbers.sum()}")
println("Average: ${numbers.average()}")
}count
count restituisce il numero di elementi, con la possibilità di filtrarlo tramite un predicato.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
println("Total: ${numbers.count()}")
println("Even count: ${numbers.count { it % 2 == 0 }}")
}maxOrNull e minOrNull
Per trovare in sicurezza i valori estremi, usare maxOrNull e minOrNull, che restituiscono null per le raccolte vuote.
fun main() {
val numbers = listOf(3, 7, 2, 9, 4)
println("Max: ${numbers.maxOrNull()}")
println("Min: ${numbers.minOrNull()}")
}sumOf e maxByOrNull
sumOf somma il valore selezionato per ogni elemento, mentre maxByOrNull trova l'elemento con il valore selezionato più grande.
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}")
}La funzione fold
fold combina gli elementi in un unico risultato, partendo da un valore iniziale. La lambda riceve l'accumulatore corrente e l'elemento attuale.
fun main() {
val numbers = listOf(1, 2, 3, 4)
val total = numbers.fold(100) { acc, n -> acc + n }
println(total)
}fold può cambiare il tipo
Poiché si fornisce il valore iniziale, fold può costruire un risultato di qualsiasi tipo, ad esempio una String.
fun main() {
val words = listOf("Kotlin", "is", "fun")
val sentence = words.fold("") { acc, w -> if (acc.isEmpty()) w else "$acc $w" }
println(sentence)
}La funzione reduce
reduce è simile a fold, ma usa il primo elemento come accumulatore iniziale. Genera un'eccezione se la raccolta è vuota e non può cambiare il tipo.
fun main() {
val numbers = listOf(1, 2, 3, 4)
val product = numbers.reduce { acc, n -> acc * n }
println(product)
}fold rispetto a reduce
Differenze principali:
foldaccetta un valore iniziale, funziona con raccolte vuote e può restituire un tipo diverso.reduceparte dal primo elemento, non funziona con raccolte vuote e mantiene il tipo degli elementi.
fun main() {
val empty = emptyList<Int>()
println(empty.fold(0) { acc, n -> acc + n })
println("fold is safe on empty lists")
}runningFold e runningReduce
Se sono necessari tutti gli accumulatori intermedi, runningFold e runningReduce restituiscono la lista dei risultati parziali.
fun main() {
val numbers = listOf(1, 2, 3, 4)
val sums = numbers.runningFold(0) { acc, n -> acc + n }
println(sums)
}Scegliere l'aggregatore
Usare le funzioni specializzate, come sum, count, average e maxOrNull, quando sono adatte. Ricorrere a fold o reduce per combinazioni personalizzate, preferendo fold quando è necessario un valore iniziale o cambiare il tipo.
Verifica rapida
Qual è la differenza principale tra fold e reduce?
Riepilogo
Ha imparato ad aggregare con sum, count, average, maxOrNull e sumOf, oltre a usare fold, con valore iniziale, qualsiasi tipo e gestione sicura delle raccolte vuote, e reduce, che usa il primo elemento come valore iniziale. Nel prossimo passaggio costruirà mappe e appiattirà raccolte annidate.
Domande Frequenti
La lezione «Aggregazione» è gratuita?
Sì — il testo completo di «Aggregazione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Kotlin Academy, passa a CoddyKit PRO. Il corso Kotlin Academy include 4 lezioni in totale.
Cosa imparerò in «Aggregazione»?
sum, count, fold, reduce Eserciti Kotlin Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Kotlin Academy?
Non è richiesta alcuna esperienza precedente. Kotlin Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Aggregazione»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Kotlin Academy?
Sì. Ogni lezione Kotlin Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.