Colecciones Inmutables
⏱ Dedicación recomendada: 0 minutos
Esto considera el contenido visible y relevante, e ignora texto colapsado o marcado como opcional.
r8vnhill/collections-kt
Kotlin ofrece una amplia variedad de colecciones inmutables que permiten gestionar datos de manera eficiente sin modificar su estado. Estas colecciones garantizan la seguridad en situaciones donde no se desea que los datos cambien después de ser inicializados, proporcionando inmutabilidad por defecto.
📌 Diferenciación entre Collection
y Map
En muchos lenguajes, como Java, los mapas (Map
) forman parte de la jerarquía de colecciones y, en algunos casos, se consideran iterables. Sin embargo, Kotlin hace una distinción clara entre colecciones iterables (Collection
) y diccionarios (Map
).
🔹 Collection
(List, Set) vs Map
en Kotlin
Tipo | Orden | Duplicados | Acceso |
---|---|---|---|
List | Sí | Sí | Índice |
Set | No | No | Contenido |
Map | No | Claves únicas | Clave |
Collection<E>
representa un conjunto de elementos de tipoE
que pueden recorrerse secuencialmente. Esto incluyeList<E>
(listas ordenadas) ySet<E>
(conjuntos sin duplicados).Map<K, V>
almacena pares clave-valor (K -> V
) y no hereda deCollection
, ya que su estructura y forma de acceso son distintas.
val lista: List<String> = listOf("Kotlin", "Scala", "Java")
val mapa: Map<String, Int> = mapOf("Kotlin" to 1, "Scala" to 2)
println(lista[0]) // Acceso por índice
println(mapa["Kotlin"]) // Acceso por clave
❓ ¿Por qué Map
no es una Collection
en Kotlin?
-
No es iterable de la misma manera
- Una
Collection
permite recorrer elementos directamente (for (x in collection)
). - Un
Map
requiere iterar sobrekeys
,values
oentries
.
for (entry in mapa) { // ❌ Error: Map<K, V> no es Iterable
println(entry)
}
for ((clave, valor) in mapa.entries) { // ✅ Forma correcta
println("$clave -> $valor")
} - Una
-
Distinta estructura de acceso
- En
Collection
, los elementos se acceden secuencialmente (list[index]
). - En
Map
, los valores se acceden por clave (map[key]
).
- En
-
Diferente semántica en métodos comunes
Collection.contains(element)
busca un valor específico.Map.contains(key)
verifica si existe una clave.
println(lista.contains("Kotlin")) // true
println(mapa.containsKey("Kotlin")) // true
println(mapa.containsValue(1)) // true