Kotlin Academy · Aula

filter, map e find em coleções

Aplique lambdas para transformar e filtrar coleções usando funções da biblioteca padrão.

Aula 4 de 413 etapas

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.

Grátis para começar

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

  1. O que é uma lambda? Sintaxe e tipos
  2. Passando lambdas para funções
  3. it: o parâmetro implícito
  4. filter, map e find em coleções
← Voltar para Kotlin Academy