listOf, setOf, mapOf: colecciones de solo lectura
Construya colecciones inmutables y comprenda sus formas de acceso.
listOf, setOf, mapOf: colecciones de solo lectura es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.
Tres funciones constructoras
La biblioteca estándar de Kotlin ofrece listOf, setOf y mapOf para construir colecciones de solo lectura. De solo lectura significa que no puede añadir ni eliminar elementos a través de la interfaz.
Crear una List
listOf crea una List<T> de solo lectura. El tipo de los elementos se infiere a partir de los argumentos.
fun main() {
val fruits = listOf("apple", "banana", "cherry")
println(fruits) // [apple, banana, cherry]
println(fruits.size) // 3
}Crear un Set
setOf devuelve un Set<T> de solo lectura. Los elementos duplicados se eliminan automáticamente.
fun main() {
val tags = setOf("kotlin", "java", "kotlin", "android")
println(tags) // [kotlin, java, android]
println(tags.size) // 3
}Crear un Map
mapOf recibe pares de key to value y devuelve un Map<K, V> de solo lectura.
fun main() {
val ages = mapOf("Alice" to 30, "Bob" to 25)
println(ages["Alice"]) // 30
println(ages.keys) // [Alice, Bob]
}Anotaciones de tipos
Si el tipo inferido no es correcto (o la lista está vacía), proporcione los parámetros de tipo explícitamente.
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 vacías
Use emptyList(), emptySet() y emptyMap() cuando quiera explícitamente una colección vacía. Es mejor que usar listOf() con un parámetro de tipo cuando la intención sea 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
}Solo lectura significa... solo lectura
La interfaz List no tiene add. El compilador impide modificarla.
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]
}Implementación subyacente
Internamente, listOf devuelve una ArrayList de Java envuelta en una vista no modificable. Solo lectura es un contrato de interfaz, no una garantía en tiempo de ejecución contra la reflexión.
fun main() {
val xs = listOf(1, 2, 3)
println(xs::class.simpleName) // ArrayList
}Pares y to
La función infija to crea un Pair<A, B>, lo que resulta práctico para literales de mapas y 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")
}Iterar colecciones de solo lectura
Las colecciones de solo lectura admiten todos los patrones de iteración estándar: for, forEach, map y filter.
fun main() {
val nums = setOf(1, 2, 3, 4)
val doubled = nums.map { it * 2 }
println(doubled) // [2, 4, 6, 8]
}Concatenar listas
El operador + produce una nueva lista combinada (se conserva el comportamiento de solo lectura).
fun main() {
val a = listOf(1, 2)
val b = listOf(3, 4)
val combined = a + b
println(combined) // [1, 2, 3, 4]
}Comprobación rápida
¿Qué ocurre cuando llama a add(4) en una lista creada con listOf(1, 2, 3)?
Resumen
listOf, setOf y mapOf crean colecciones de solo lectura. No se pueden modificar a través de sus interfaces. Use + para producir nuevas colecciones y emptyList()/emptySet()/emptyMap() para crear colecciones vacías con tipo.
Preguntas frecuentes
¿La lección «listOf, setOf, mapOf: colecciones de solo lectura» es gratis?
Sí — el texto completo de «listOf, setOf, mapOf: colecciones de solo lectura» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.
¿Qué aprenderé en «listOf, setOf, mapOf: colecciones de solo lectura»?
Construya colecciones inmutables y comprenda sus formas de acceso. Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Kotlin Academy?
No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «listOf, setOf, mapOf: colecciones de solo lectura»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?
Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- listOf, setOf, mapOf: colecciones de solo lectura
- mutableListOf, mutableMapOf: constructores mutables
- Acceso a elementos: get, first, last, getOrNull
- Iterar y transformar colecciones con la biblioteca estándar