0Pricing
Kotlin Academy · Aula

listOf, setOf, mapOf: coleções somente para leitura

Crie coleções imutáveis e entenda como acessá-las.

listOf, setOf, mapOf: coleções somente para leitura é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 1 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 construtoras

A biblioteca padrão do Kotlin oferece listOf, setOf e mapOf para construir coleções somente para leitura. Somente para leitura significa que você não pode adicionar nem remover elementos por meio da interface.

Construindo uma lista

listOf cria uma List<T> somente para leitura. O tipo dos elementos é inferido a partir dos argumentos.

fun main() {
    val fruits = listOf("apple", "banana", "cherry")
    println(fruits)        // [apple, banana, cherry]
    println(fruits.size)   // 3
}

Construindo um conjunto

setOf retorna um Set<T> somente para leitura. Elementos duplicados são automaticamente agrupados.

fun main() {
    val tags = setOf("kotlin", "java", "kotlin", "android")
    println(tags) // [kotlin, java, android]
    println(tags.size) // 3
}

Construindo um mapa

mapOf recebe pares key to value e retorna um Map<K, V> somente para leitura.

fun main() {
    val ages = mapOf("Alice" to 30, "Bob" to 25)
    println(ages["Alice"]) // 30
    println(ages.keys)     // [Alice, Bob]
}

Anotações de tipo

Se o tipo inferido estiver incorreto (ou se a lista estiver vazia), forneça parâmetros de tipo explícitos.

fun main() {
    val empty: List<String> = listOf()
    val numbers: List<Int> = listOf(1, 2, 3)
    val emptyMap: Map<String, Int> = mapOf()
    println("empty=${empty}, n=${numbers}, m=${emptyMap}")
}

Variantes vazias

Use emptyList(), emptySet(), emptyMap() quando quiser explicitamente uma coleção vazia. Isso é melhor do que usar listOf() com um parâmetro de tipo quando a intenção for importante.

fun main() {
    val xs = emptyList<String>()
    val ys = emptySet<Int>()
    val zs = emptyMap<String, Int>()
    println("${xs.size}, ${ys.size}, ${zs.size}") // 0, 0, 0
}

Somente leitura significa... somente leitura

A interface List não possui add. O compilador impede a mutação.

fun main() {
    val items = listOf(1, 2, 3)
    // items.add(4) // ERROR: List has no add
    val bigger = items + 4 // creates new list
    println(bigger) // [1, 2, 3, 4]
}

Implementação subjacente

Internamente, listOf retorna um ArrayList Java envolvido em uma visão não modificável. Somente leitura é um contrato de interface, não uma garantia em tempo de execução contra reflexão.

fun main() {
    val xs = listOf(1, 2, 3)
    println(xs::class.simpleName) // ArrayList
}

Pares e a função de associação

A função infixa to cria um Pair<A, B> — útil para literais de mapas e tuplas.

fun main() {
    val pair = "key" to 42
    println(pair) // (key, 42)
    val m = mapOf("a" to 1, "b" to 2)
    for ((k, v) in m) println("$k -> $v")
}

Iterando sobre coleções somente para leitura

Coleções somente para leitura oferecem todos os padrões comuns de iteração: for, forEach, map, filter.

fun main() {
    val nums = setOf(1, 2, 3, 4)
    val doubled = nums.map { it * 2 }
    println(doubled) // [2, 4, 6, 8]
}

Concatenando listas

O operador + produz uma nova lista combinada (o comportamento somente para leitura é preservado).

fun main() {
    val a = listOf(1, 2)
    val b = listOf(3, 4)
    val combined = a + b
    println(combined) // [1, 2, 3, 4]
}

Verificação rápida

O que acontece quando você chama add(4) em uma lista criada com listOf(1, 2, 3)?

Recapitulação

listOf, setOf e mapOf criam coleções somente para leitura. Elas não podem ser modificadas por meio de suas interfaces. Use + para produzir novas coleções e emptyList()/emptySet()/emptyMap() para coleções vazias tipadas.

Perguntas Frequentes

A aula “listOf, setOf, mapOf: coleções somente para leitura” é grátis?

Sim — o texto completo de “listOf, setOf, mapOf: coleções somente para leitura” é 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 “listOf, setOf, mapOf: coleções somente para leitura”?

Crie coleções imutáveis e entenda como acessá-las. 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 1 de 4.

Quanto tempo leva a aula “listOf, setOf, mapOf: coleções somente para leitura”?

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. listOf, setOf, mapOf: coleções somente para leitura
  2. mutableListOf, mutableMapOf: construtores mutáveis
  3. Acessando elementos: get, first, last, getOrNull
  4. Iterando e transformando coleções com a biblioteca padrão
← Voltar para Kotlin Academy