Agregación
sum, count, fold y reduce
Agregación es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.
Agregación de colecciones
La agregación reduce una colección a un único valor. Kotlin proporciona funciones listas para usar, como sum, count, average y max, además de fold y reduce para usos generales.
sum y average
sum suma los elementos numéricos y average devuelve su media como un Double.
fun main() {
val numbers = listOf(2, 4, 6, 8)
println("Sum: ${numbers.sum()}")
println("Average: ${numbers.average()}")
}count
count devuelve el número de elementos, con la opción de filtrarlos mediante un predicado.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
println("Total: ${numbers.count()}")
println("Even count: ${numbers.count { it % 2 == 0 }}")
}maxOrNull y minOrNull
Para encontrar valores extremos de forma segura, use maxOrNull y minOrNull, que devuelven null en las colecciones vacías.
fun main() {
val numbers = listOf(3, 7, 2, 9, 4)
println("Max: ${numbers.maxOrNull()}")
println("Min: ${numbers.minOrNull()}")
}sumOf y maxByOrNull
sumOf suma un valor seleccionado de cada elemento y maxByOrNull encuentra el elemento cuyo valor seleccionado es mayor.
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 función fold
fold combina elementos en un único resultado, empezando por un valor inicial. La lambda recibe el acumulador actual y el elemento actual.
fun main() {
val numbers = listOf(1, 2, 3, 4)
val total = numbers.fold(100) { acc, n -> acc + n }
println(total)
}fold puede cambiar el tipo
Como proporciona el valor inicial, fold puede construir un resultado de cualquier tipo, como un 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 función reduce
reduce es similar a fold, pero usa el primer elemento como acumulador inicial. Genera una excepción si la colección está vacía y no puede cambiar el tipo.
fun main() {
val numbers = listOf(1, 2, 3, 4)
val product = numbers.reduce { acc, n -> acc * n }
println(product)
}fold frente a reduce
Diferencias principales:
foldrecibe un valor inicial, funciona con colecciones vacías y puede devolver un tipo diferente.reducecomienza por el primer elemento, falla con colecciones vacías y conserva el tipo de los elementos.
fun main() {
val empty = emptyList<Int>()
println(empty.fold(0) { acc, n -> acc + n })
println("fold is safe on empty lists")
}runningFold y runningReduce
Si desea obtener cada acumulador intermedio, runningFold (y runningReduce) devuelve la lista de resultados parciales.
fun main() {
val numbers = listOf(1, 2, 3, 4)
val sums = numbers.runningFold(0) { acc, n -> acc + n }
println(sums)
}Elegir un agregador
Use las funciones especializadas (sum, count, average, maxOrNull) cuando se ajusten a sus necesidades. Recurra a fold o reduce para combinaciones personalizadas y prefiera fold cuando necesite un valor inicial o cambiar el tipo.
Comprobación rápida
¿Cuál es la diferencia principal entre fold y reduce?
Repaso
Ha aprendido a agregar con sum, count, average, maxOrNull y sumOf, además de los generales fold (con valor inicial, cualquier tipo y seguridad ante colecciones vacías) y reduce (con el primer elemento como valor inicial). A continuación, creará mapas y aplanará colecciones anidadas.
Preguntas frecuentes
¿La lección «Agregación» es gratis?
Sí — el texto completo de «Agregación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Agregación»?
sum, count, fold y reduce Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Kotlin Academy?
No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Agregación»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?
Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.