8. Colecciones: Agrupar datos
Listas: Ordenadas y duplicados
Kotlin tiene listas inmutables (listOf) y mutables (mutableListOf):
listas.kt
KOTLIN
1// Lista inmutable
2val frutas = listOf("Manzana", "Pera", "Naranja")
3println(frutas[0]) // "Manzana"
4// frutas.add("Uva") // ERROR
5
6// Lista mutable
7val carrito = mutableListOf("Leche", "Pan")
8carrito.add("Huevos") // OK
9carrito.remove("Pan") // OK
10println(carrito) // [Leche, Huevos]
Sets y Maps
sets-maps.kt
KOTLIN
1// Set: sin duplicados
2val numeros = setOf(1, 2, 2, 3, 3)
3println(numeros) // [1, 2, 3]
4
5// Map: pares clave-valor
6val edades = mapOf("Ana" to 25, "Luis" to 30)
7println(edades["Ana"]) // 25
8println(edades.keys) // [Ana, Luis]
9println(edades.values) // [25, 30]
Métodos funcionales
La verdadera magia de Kotlin: transformar colecciones con elegancia:
funcionales.kt
KOTLIN
1val numeros = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
2
3// filter: filtrar elementos
4val pares = numeros.filter { it % 2 == 0 }
5println(pares) // [2, 4, 6, 8, 10]
6
7// map: transformar cada elemento
8val dobles = numeros.map { it * 2 }
9println(dobles) // [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
10
11// reduce: acumular en un solo valor
12val suma = numeros.reduce { acc, i -> acc + i }
13println(suma) // 55
14
15// forEach: ejecutar acción por cada elemento
16numeros.forEach { print("$it ") } // 1 2 3 4 5 6 7 8 9 10
17
18// chained: filter + map
19val resultado = numeros.filter { it > 3 }.map { it * 10 }
20println(resultado) // [40, 50, 60, 70, 80, 90, 100]
💻 Misión
Crea una lista de 5 números. Usa filter para quedarte con los mayores a 3, map para duplicarlos, y reduce para sumarlos.
👁️ Ver solución sugerida
main.kt
KOTLIN
1fun main() {
2 val numeros = listOf(1, 5, 2, 8, 3)
3 val resultado = numeros
4 .filter { it > 3 }
5 .map { it * 2 }
6 .reduce { acc, i -> acc + i }
7 println("Suma de duplicados mayores a 3: $resultado")
8 // (5 + 8) * 2 = 26
9}


