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
- Filtragem e Mapeamento
- Agrupamento e Particionamento
- Agregação
- Associação e Achatamento