filter, map e find em coleções
Aplique lambdas para transformar e filtrar coleções usando funções da biblioteca padrão.
filter, map e find em coleções é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 4 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.
Três funções essenciais
A filtragem mantém os elementos que correspondem a um predicado. A transformação modifica cada elemento. A busca retorna o primeiro elemento correspondente (ou null). Juntas, elas abrangem a maior parte do processamento de coleções.
Fundamentos da filtragem
filter retorna uma nova lista contendo somente os elementos para os quais o predicado é verdadeiro.
fun main() {
val nums = listOf(1, 2, 3, 4, 5, 6)
val evens = nums.filter { it % 2 == 0 }
println(evens) // [2, 4, 6]
}Fundamentos da transformação
map retorna uma nova lista do mesmo tamanho, na qual cada elemento é transformado pela lambda.
fun main() {
val nums = listOf(1, 2, 3)
val squares = nums.map { it * it }
println(squares) // [1, 4, 9]
}Fundamentos da busca
find retorna o primeiro elemento correspondente ao predicado ou null se nenhum corresponder.
fun main() {
val words = listOf("apple", "banana", "cherry")
val match = words.find { it.startsWith("b") }
println(match) // banana
}Encadeando filtragem e transformação
Combine as duas operações com a sintaxe de ponto para criar fluxos de dados expressivos.
fun main() {
val nums = listOf(1, 2, 3, 4, 5)
val result = nums.filter { it % 2 == 1 }.map { it * 10 }
println(result) // [10, 30, 50]
}Filtrando classes de dados
filter e map são especialmente úteis com coleções de instâncias de classes de dados.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Ana", 17), User("Ben", 25), User("Cal", 31))
val adultNames = users.filter { it.age >= 18 }.map { it.name }
println(adultNames) // [Ben, Cal]
}Busca versus primeiro elemento
find retorna um valor anulável; first { ... } lança uma exceção se não houver correspondência. Use find para correspondências opcionais.
fun main() {
val nums = listOf(1, 2, 3)
println(nums.find { it > 10 }) // null
// nums.first { it > 10 } // throws NoSuchElementException
println(nums.firstOrNull { it > 10 }) // null (alias of find)
}filterNot e filterNotNull
filterNot inverte o predicado. filterNotNull remove entradas nulas de uma lista de valores anuláveis.
fun main() {
val nums = listOf(1, 2, 3, 4)
println(nums.filterNot { it % 2 == 0 }) // [1, 3]
val maybe: List<String?> = listOf("a", null, "b", null, "c")
println(maybe.filterNotNull()) // [a, b, c]
}mapNotNull
mapNotNull transforma e depois remove os valores nulos — útil para análise e conversão de dados.
fun main() {
val raw = listOf("1", "two", "3", "four")
val numbers = raw.mapNotNull { it.toIntOrNull() }
println(numbers) // [1, 3]
}Fluxo de dados do mundo real
Um pequeno exemplo que combina filtragem, transformação e uma redução final.
data class Product(val name: String, val price: Double, val inStock: Boolean)
fun main() {
val products = listOf(
Product("Pen", 1.0, true),
Product("Book", 12.0, false),
Product("Lamp", 25.0, true)
)
val total = products
.filter { it.inStock }
.map { it.price }
.sum()
println("Available total: $total") // 26.0
}Escolhendo entre operações
Use a filtragem quando quiser um subconjunto, a transformação para modificar os elementos, a busca para uma única correspondência opcional e encadeie as operações quando necessário.
fun main() {
val words = listOf("alpha", "beta", "gamma", "delta")
println(words.filter { it.length == 5 }) // [alpha, gamma, delta]
println(words.map { it.uppercase() }) // [ALPHA, BETA, GAMMA, DELTA]
println(words.find { it.endsWith("ta") }) // beta
}Verificação rápida
Qual função retorna uma nova coleção com os elementos transformados por uma lambda?
Recapitulação
A filtragem seleciona, a transformação modifica e a busca localiza a primeira correspondência (ou null). Combine-as livremente em fluxos de dados; use mapNotNull e filterNotNull ao lidar com valores opcionais.
Aprenda Kotlin com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 51
- Aulas
- 203
Perguntas Frequentes
A aula “filter, map e find em coleções” é grátis?
Sim — o texto completo de “filter, map e find em coleções” é 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 “filter, map e find em coleções”?
Aplique lambdas para transformar e filtrar coleções usando funções da biblioteca padrão. 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 4 de 4.
Quanto tempo leva a aula “filter, map e find em coleções”?
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.
Todas as aulas deste curso
- O que é uma lambda? Sintaxe e tipos
- Passando lambdas para funções
- it: o parâmetro implícito
- filter, map e find em coleções