0Pricing
Kotlin Academy · Lección

Creación de sequences

A partir de colecciones y generadores

Creación de sequences es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 2 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.

Creación de secuencias

Hay varias formas de crear una Sequence: a partir de colecciones existentes, de elementos, mediante una función generadora o con un builder. En esta lección se explican todas.

Desde una colección con asSequence

El método más habitual consiste en llamar a asSequence() sobre una colección existente para procesarla de forma perezosa.

fun main() {
    val seq = listOf(1, 2, 3, 4).asSequence()
    val result = seq.map { it * 2 }.toList()
    println(result)
}

Desde elementos con sequenceOf

sequenceOf crea directamente una secuencia a partir de un conjunto fijo de valores.

fun main() {
    val seq = sequenceOf("a", "b", "c")
    seq.forEach { println(it) }
}

Secuencias infinitas con generateSequence

generateSequence crea una secuencia posiblemente infinita a partir de un valor inicial y una función que calcula el siguiente elemento. Combínela con take para limitarla.

fun main() {
    val powers = generateSequence(1) { it * 2 }
    val first5 = powers.take(5).toList()
    println(first5)
}

Detener generateSequence

Si la función que obtiene el siguiente elemento devuelve null, la secuencia termina. Esto permite generar elementos hasta que se cumpla una condición.

fun main() {
    val countdown = generateSequence(5) { if (it > 1) it - 1 else null }
    println(countdown.toList())
}

generateSequence sin valor inicial

Puede pasar una única lambda productora que devuelva el siguiente valor o null. Esto resulta práctico para leer flujos de entrada de forma perezosa.

fun main() {
    var n = 0
    val seq = generateSequence { if (n < 3) n++ else null }
    println(seq.toList())
}

El builder sequence

El builder sequence { } permite producir elementos de forma imperativa mediante yield (un valor) y yieldAll (varios valores).

fun main() {
    val seq = sequence {
        yield(1)
        yield(2)
        yieldAll(listOf(3, 4))
    }
    println(seq.toList())
}

Producción perezosa con yield

El builder también es perezoso: el código situado entre los yields solo se ejecuta a medida que se solicitan los elementos. Combinado con take, permite describir generadores infinitos de forma segura.

fun main() {
    val naturals = sequence {
        var i = 1
        while (true) {
            yield(i)
            i++
        }
    }
    println(naturals.take(4).toList())
}

Fibonacci con generateSequence

Un ejemplo clásico: genere números de Fibonacci de forma perezosa usando un Pair como estado.

fun main() {
    val fib = generateSequence(Pair(0, 1)) { Pair(it.second, it.first + it.second) }
        .map { it.first }
    println(fib.take(8).toList())
}

Conversión de nuevo a una colección

Una secuencia se convierte en una colección concreta únicamente cuando llama a una operación terminal como toList(), toSet() o toMutableList().

fun main() {
    val set = sequenceOf(1, 2, 2, 3).toSet()
    println(set)
}

Elegir un método de creación

Use asSequence() para datos existentes, sequenceOf para valores fijos, generateSequence para series calculadas y el builder sequence { } para una generación imperativa personalizada.

Comprobación rápida

¿Cómo sabe generateSequence cuándo detenerse?

Repaso

Puede crear secuencias con asSequence(), sequenceOf, generateSequence (valor inicial más siguiente elemento, termina con null) y el builder sequence { } con yield/yieldAll. A continuación, verá cómo las operaciones perezosas evitan las listas intermedias.

Preguntas frecuentes

¿La lección «Creación de sequences» es gratis?

Sí — el texto completo de «Creación de sequences» 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 «Creación de sequences»?

A partir de colecciones y generadores 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 2 de 4.

¿Cuánto tiempo toma la lección «Creación de sequences»?

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

  1. Por qué usar sequences
  2. Creación de sequences
  3. Operaciones perezosas
  4. Sequences frente a colecciones
← Volver a Kotlin Academy