Colecciones de Kotlin
Trabaje con List, Set y Map. Utilice operadores funcionales como filter, map, sortedBy, forEach, find, any y all, y encadene operaciones para transformar datos de forma concisa.
Colecciones de Kotlin es una lección gratuita de Android Academy en CoddyKit. Esta es la lección 1 de 6. 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 Android Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Android Academy incluye 6 lecciones en total.
Introducción a las colecciones
La biblioteca estándar de Kotlin proporciona tres tipos principales de colecciones:
- List — secuencia ordenada de elementos (puede contener duplicados)
- Set — elementos únicos, sin un orden específico
- Map — pares clave-valor; las claves son únicas
Cada tipo tiene una versión inmutable (de solo lectura) y una versión mutable (se puede modificar).
Listas: listOf frente a mutableListOf
Cree listas mediante funciones de fábrica:
fun main() {
// Immutable — cannot add/remove items
val fruits = listOf("Apple", "Banana", "Cherry")
println(fruits[0]) // Apple
println(fruits.size) // 3
// Mutable — can modify
val scores = mutableListOf(10, 20, 30)
scores.add(40)
scores.removeAt(0) // remove index 0
println(scores) // [20, 30, 40]
}Map: pares clave-valor
Use mapOf y mutableMapOf para crear mapas. Acceda a los valores mediante la clave:
fun main() {
val capitals = mapOf(
"Turkey" to "Ankara",
"Germany" to "Berlin",
"Japan" to "Tokyo"
)
println(capitals["Turkey"]) // Ankara
println(capitals["France"]) // null (not found)
println(capitals.getOrDefault("France", "Unknown")) // Unknown
// Iterate
for ((country, city) in capitals) {
println("$country -> $city")
}
}filter: seleccionar elementos
filter devuelve una lista nueva que contiene únicamente los elementos que cumplen una condición:
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8)
val evens = numbers.filter { it % 2 == 0 }
println(evens) // [2, 4, 6, 8]
val names = listOf("Alice", "Bob", "Anna", "Charlie")
val aNames = names.filter { it.startsWith("A") }
println(aNames) // [Alice, Anna]
}map: transformar elementos
map transforma cada elemento y devuelve una lista nueva:
fun main() {
val prices = listOf(10.0, 20.0, 30.0)
// Apply 10% tax
val withTax = prices.map { it * 1.1 }
println(withTax) // [11.0, 22.0, 33.0]
val names = listOf("alice", "bob", "carol")
val upper = names.map { it.uppercase() }
println(upper) // [ALICE, BOB, CAROL]
}sortedBy y sortedByDescending
Ordene una lista según una propiedad:
data class Student(val name: String, val grade: Int)
fun main() {
val students = listOf(
Student("Alice", 88),
Student("Bob", 95),
Student("Carol", 72)
)
val byGrade = students.sortedByDescending { it.grade }
for (s in byGrade) println("${s.name}: ${s.grade}")
// Bob: 95
// Alice: 88
// Carol: 72
}forEach y find
Otras dos funciones útiles para colecciones:
forEach— itera sin crear un resultadofind— devuelve el primer elemento que cumple una condición, o null
Encadenar operaciones
Encadene varias operaciones para transformar datos de forma concisa:
data class Product(val name: String, val price: Double, val inStock: Boolean)
fun main() {
val products = listOf(
Product("Laptop", 999.0, true),
Product("Mouse", 29.0, false),
Product("Keyboard", 79.0, true),
Product("Monitor", 349.0, true)
)
// In-stock products under $500, sorted by price
val result = products
.filter { it.inStock && it.price < 500 }
.sortedBy { it.price }
.map { "${it.name}: ${it.price}" }
result.forEach { println(it) }
}any, all y count
Funciones de agregación para obtener respuestas rápidamente:
any { condition }— true si al menos un elemento cumple la condiciónall { condition }— true si todos los elementos cumplen la condicióncount { condition }— cantidad de elementos que cumplen la condiciónsumOf { it.price }— suma de una propiedad numérica
Comprobación rápida
¿Qué función usaría para obtener únicamente los elementos de una lista que cumplen una condición?
Resumen: colecciones de Kotlin
Ahora puede trabajar con datos de forma eficiente en Kotlin:
listOf/mutableListOf,mapOf/mutableMapOffilter— seleccionar elementos coincidentesmap— transformar elementossortedBy/sortedByDescending- Encadene operaciones para crear flujos de datos claros y legibles
Siguiente: mostrar listas en pantalla con RecyclerView.
Preguntas frecuentes
¿La lección «Colecciones de Kotlin» es gratis?
Sí — el texto completo de «Colecciones de Kotlin» 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 Android Academy, actualiza a CoddyKit PRO. El curso de Android Academy incluye 6 lecciones en total.
¿Qué aprenderé en «Colecciones de Kotlin»?
Trabaje con List, Set y Map. Utilice operadores funcionales como filter, map, sortedBy, forEach, find, any y all, y encadene operaciones para transformar datos de forma concisa. Practicas Android 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 Android Academy?
No se requiere experiencia previa. Android 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 6.
¿Cuánto tiempo toma la lección «Colecciones de Kotlin»?
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 Android Academy?
Sí. Cada lección de Android 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
- Colecciones de Kotlin
- Fundamentos de RecyclerView
- Eventos de clic de RecyclerView
- SharedPreferences
- DataStore Preferences
- Adaptadores y DiffUtil