Kotlin Academy · Aula

Classes de Dados em Coleções

Use-as em mapas e conjuntos

Aula 4 de 413 etapas

Classes de Dados 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.

Classes de dados e coleções

Como as classes de dados têm equals e hashCode baseados em valor, elas funcionam perfeitamente dentro de coleções.

Esta lição mostra como as classes de dados funcionam em listas, conjuntos e mapas.

Classes de dados em uma lista

Armazene objetos de dados em uma lista e itere sobre eles como faria com quaisquer outros elementos.

O toString legível facilita a impressão.

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

fun main() {
    val users = listOf(User("Alice", 30), User("Bob", 25))
    for (u in users) println(u)
}

contains funciona por valor

Como equals compara valores, contains encontra um objeto igual mesmo que ele seja uma instância diferente.

Você não precisa da mesma referência exata.

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

fun main() {
    val users = listOf(User("Alice", 30))
    println(users.contains(User("Alice", 30)))
}

Removendo duplicatas com um conjunto

Os conjuntos rejeitam duplicatas usando equals e hashCode.

Dois objetos de dados com valores idênticos são considerados o mesmo elemento.

data class Point(val x: Int, val y: Int)

fun main() {
    val set = setOf(Point(1, 1), Point(1, 1), Point(2, 2))
    println(set.size)
}

Classes de dados como chaves de mapas

Uma classe de dados é uma excelente chave de mapa porque as buscas dependem da igualdade de valores.

Você pode criar um objeto-chave dinamicamente e ainda assim encontrar o valor armazenado.

data class Coord(val x: Int, val y: Int)

fun main() {
    val grid = mapOf(Coord(0, 0) to "start", Coord(1, 1) to "goal")
    println(grid[Coord(1, 1)])
}

Classes de dados como valores de mapas

É claro que as classes de dados também podem ser os valores, representando registros completos indexados por um identificador.

Essa é uma estrutura comum para buscas em memória.

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

fun main() {
    val byId = mapOf(1 to User("Alice", 30))
    println(byId[1]?.name)
}

Filtrando coleções

Combine classes de dados com funções de coleção, como filter, para consultar seus dados.

A lambda acessa as propriedades diretamente.

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

fun main() {
    val users = listOf(User("A", 20), User("B", 40))
    val adults = users.filter { it.age >= 30 }
    println(adults)
}

Mapeando para propriedades

Use map para transformar uma coleção de objetos em uma coleção de uma única propriedade.

Isso extrai apenas os dados de que você precisa.

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

fun main() {
    val users = listOf(User("Alice", 30), User("Bob", 25))
    val names = users.map { it.name }
    println(names)
}

Agrupando por uma propriedade

groupBy transforma uma lista em um mapa indexado por uma propriedade escolhida.

Aqui, os usuários são agrupados por cidade.

data class User(val name: String, val city: String)

fun main() {
    val users = listOf(User("A", "Paris"), User("B", "Paris"), User("C", "Rome"))
    val byCity = users.groupBy { it.city }
    println(byCity["Paris"]?.size)
}

Atualizando itens de forma imutável

Para atualizar um item em uma lista imutável, percorra-a com map e use copy no elemento correspondente.

O resultado é uma nova lista com um objeto alterado.

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

fun main() {
    val users = listOf(User("Alice", 30), User("Bob", 25))
    val updated = users.map { if (it.name == "Bob") it.copy(age = 26) else it }
    println(updated)
}

Juntando tudo

As classes de dados são elementos ideais para coleções:

  • contains e os conjuntos funcionam por valor
  • Elas produzem chaves de mapa seguras e comparáveis
  • Elas combinam naturalmente com filter, map e groupBy
  • copy permite atualizações imutáveis
data class User(val name: String, val age: Int)

fun main() {
    val users = setOf(User("Alice", 30), User("Alice", 30))
    println(users.size)
    println(users.map { it.name })
}

Verificação rápida

Teste sua compreensão das classes de dados em coleções.

Recapitulação

Você aprendeu como as classes de dados funcionam em coleções:

  • A igualdade de valores permite o funcionamento de contains, conjuntos e chaves de mapas
  • Elas combinam com filter, map e groupBy
  • copy permite atualizações imutáveis

Isso conclui o curso de Classes de Dados e Desestruturação.

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 “Classes de Dados em Coleções” é grátis?

Sim — o texto completo de “Classes de Dados 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 “Classes de Dados em Coleções”?

Use-as em mapas e conjuntos 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 “Classes de Dados 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. Declaração de Classes de Dados
  2. copy e equals
  3. Declarações de Desestruturação
  4. Classes de Dados em Coleções
← Voltar para Kotlin Academy