Agregação
sum, count, fold, reduce
Agregação é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.
Agregação de coleções
A agregação reduz uma coleção a um único valor. O Kotlin oferece funções prontas como sum, count, average, max e as funções de uso geral fold e reduce.
sum e average
sum soma elementos numéricos, e average retorna a média deles como um número de ponto flutuante.
fun main() {
val numbers = listOf(2, 4, 6, 8)
println("Sum: ${numbers.sum()}")
println("Average: ${numbers.average()}")
}Contagem
count retorna o número de elementos, opcionalmente filtrados por um 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 e minOrNull
Para encontrar extremos com segurança, use maxOrNull e minOrNull, que retornam nulo para coleções vazias.
fun main() {
val numbers = listOf(3, 7, 2, 9, 4)
println("Max: ${numbers.maxOrNull()}")
println("Min: ${numbers.minOrNull()}")
}sumOf e maxByOrNull
sumOf soma um valor selecionado de cada elemento, e maxByOrNull encontra o elemento com o maior valor selecionado.
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}")
}A função fold
fold combina elementos em um único resultado, começando com um valor inicial. A lambda recebe o acumulador corrente e o elemento atual.
fun main() {
val numbers = listOf(1, 2, 3, 4)
val total = numbers.fold(100) { acc, n -> acc + n }
println(total)
}fold pode alterar o tipo
Como você fornece o valor inicial, fold pode construir um resultado de qualquer tipo, como uma cadeia de caracteres.
fun main() {
val words = listOf("Kotlin", "is", "fun")
val sentence = words.fold("") { acc, w -> if (acc.isEmpty()) w else "$acc $w" }
println(sentence)
}A função de redução
reduce funciona como fold, mas usa o first elemento como acumulador inicial. Ela lança uma exceção se a coleção estiver vazia e não pode alterar o tipo.
fun main() {
val numbers = listOf(1, 2, 3, 4)
val product = numbers.reduce { acc, n -> acc * n }
println(product)
}fold versus redução
Principais diferenças:
foldrecebe um valor inicial, funciona com coleções vazias e pode retornar um tipo diferente.reducecomeça pelo primeiro elemento, falha com coleções vazias e mantém o tipo dos elementos.
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 quiser obter cada acumulador intermediário, runningFold (e runningReduce) retorna a lista de resultados parciais.
fun main() {
val numbers = listOf(1, 2, 3, 4)
val sums = numbers.runningFold(0) { acc, n -> acc + n }
println(sums)
}Escolhendo um agregador
Use as funções especializadas (sum, count, average, maxOrNull) quando forem adequadas. Use fold ou reduce para combinações personalizadas, preferindo fold quando for necessário um valor inicial ou uma alteração de tipo.
Verificação rápida
Qual é a principal diferença entre fold e reduce?
Recapitulação
Você aprendeu a fazer agregações com sum, count, average, maxOrNull e sumOf, além das funções gerais fold (valor inicial, qualquer tipo, seguro para coleções vazias) e reduce (usa o first elemento como semente). Em seguida, você criará mapas e nivelará coleções aninhadas.
Perguntas Frequentes
A aula “Agregação” é grátis?
Sim — o texto completo de “Agregação” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.
O que vou aprender em “Agregação”?
sum, count, fold, reduce Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Kotlin Academy?
Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Agregação”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Kotlin Academy?
Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.