0Pricing
Kotlin Academy · Aula

Associação e Achatamento

associate e flatMap

Associação e Achatamento é 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.

Associação e nivelamento

Mais duas ferramentas poderosas para coleções: as funções da família de associação criam mapas a partir de uma lista, e flatMap / flatten transformam coleções aninhadas em uma única coleção plana.

A função associateWith

associateWith usa cada elemento como uma chave e calcula seu valor com uma lambda, produzindo um mapa.

fun main() {
    val words = listOf("a", "bb", "ccc")
    val lengths = words.associateWith { it.length }
    println(lengths)
}

A função associateBy

associateBy faz o oposto: calcula a chave a partir de cada elemento, mantendo o elemento como valor.

data class User(val id: Int, val name: String)

fun main() {
    val users = listOf(User(1, "Ann"), User(2, "Bob"))
    val byId = users.associateBy { it.id }
    println(byId[2]?.name)
}

A função de associação

A função geral associate permite criar a chave e o valor ao mesmo tempo, retornando um Pair para cada elemento.

fun main() {
    val names = listOf("Ann", "Bob", "Cy")
    val map = names.associate { it to it.length }
    println(map)
}

Chaves duplicadas

Se dois elementos produzirem a mesma chave em uma função de associação, o último vencerá. Mantenha as chaves únicas quando precisar preservar todos os elementos.

fun main() {
    val words = listOf("apple", "ant", "bee")
    val byFirst = words.associateBy { it.first() }
    println(byFirst)
}

A função flatten

flatten recebe uma coleção de coleções e as mescla em uma única lista plana.

fun main() {
    val nested = listOf(listOf(1, 2), listOf(3, 4), listOf(5))
    val flat = nested.flatten()
    println(flat)
}

A função flatMap

flatMap transforma cada elemento em uma coleção e depois nivela todas essas coleções em uma única lista. É como combinar mapeamento e flatten em uma única etapa.

fun main() {
    val words = listOf("hi", "ok")
    val chars = words.flatMap { it.toList() }
    println(chars)
}

flatMap em dados aninhados

flatMap é ideal para expandir estruturas aninhadas em uma única sequência de itens.

data class Team(val members: List<String>)

fun main() {
    val teams = listOf(Team(listOf("Ann", "Bob")), Team(listOf("Cy")))
    val everyone = teams.flatMap { it.members }
    println(everyone)
}

flatMap versus mapeamento

Use map quando cada elemento produzir exatamente um resultado. Use flatMap quando cada elemento produzir uma coleção e você quiser combiná-las em uma única lista plana.

fun main() {
    val numbers = listOf(1, 2, 3)
    val mapped = numbers.map { listOf(it, it * 10) }
    val flat = numbers.flatMap { listOf(it, it * 10) }
    println("map: $mapped")
    println("flatMap: $flat")
}

Combinando associação e flatMap

Essas ferramentas costumam aparecer juntas em fluxos de dados: nivele os dados aninhados e depois associe-os a um mapa de consulta para obter acesso rápido.

data class Order(val items: List<String>)

fun main() {
    val orders = listOf(Order(listOf("pen", "ink")), Order(listOf("pen")))
    val counts = orders.flatMap { it.items }.groupingBy { it }.eachCount()
    println(counts)
}

Quando usar cada uma

Escolha associateBy/associateWith para criar mapas de consulta rápidos a partir de listas, e flatMap/flatten para compactar coleções aninhadas. Elas tornam o trabalho com dados estruturados conciso e claro.

Verificação rápida

O que flatMap faz?

Recapitulação

Você aprendeu a criar mapas com associate, associateBy e associateWith (a última chave duplicada vence), e a eliminar aninhamentos com flatten e flatMap. Essas funções completam seu conjunto de ferramentas para coleções, permitindo transformar, organizar, agregar e reestruturar dados.

Perguntas Frequentes

A aula “Associação e Achatamento” é grátis?

Sim — o texto completo de “Associação e Achatamento” é 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 “Associação e Achatamento”?

associate e flatMap 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 “Associação e Achatamento”?

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. Filtragem e Mapeamento
  2. Agrupamento e Particionamento
  3. Agregação
  4. Associação e Achatamento
← Voltar para Kotlin Academy