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