0Pricing
Kotlin Academy · Leçon

Créer des séquences

À partir de collections et de générateurs

Créer des séquences est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.

Créer des séquences

Il existe plusieurs façons de créer une Sequence : à partir de collections existantes, à partir d’éléments, avec une fonction génératrice ou avec un générateur. Cette leçon présente chacune de ces méthodes.

À partir d’une collection avec asSequence

L’approche la plus courante consiste à appeler asSequence() sur une collection existante pour la traiter paresseusement.

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

À partir d’éléments avec sequenceOf

sequenceOf crée directement une séquence à partir d’un ensemble fixe de valeurs.

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

Séquences infinies avec generateSequence

generateSequence construit une séquence, éventuellement infinie, à partir d’une graine et d’une fonction qui calcule l’élément suivant. Associez-la à take pour la limiter.

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

Arrêter generateSequence

Si la fonction qui produit l’élément suivant renvoie null, la séquence se termine. Cela vous permet de générer des éléments jusqu’à ce qu’une condition soit satisfaite.

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

generateSequence sans graine

Vous pouvez transmettre une seule lambda productrice qui renvoie la valeur suivante ou null. Cette méthode est pratique pour lire paresseusement des flux d’entrée.

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

Le générateur de séquence

Le générateur sequence { } vous permet de produire des éléments de manière impérative avec yield (une valeur) et yieldAll (plusieurs valeurs).

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

Production paresseuse

Le générateur est lui aussi paresseux : le code situé entre les appels à yield ne s’exécute que lorsque des éléments sont demandés. Avec take, vous pouvez décrire des générateurs infinis en toute sécurité.

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

Fibonacci avec generateSequence

Un exemple classique consiste à générer paresseusement les nombres de Fibonacci en utilisant une paire comme état.

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

Reconvertir en collection

Une séquence ne devient une collection concrète que lorsque vous appelez une opération terminale comme toList(), toSet() ou toMutableList().

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

Choisir une méthode de création

Utilisez asSequence() pour des données existantes, sequenceOf pour des valeurs fixes, generateSequence pour des séries calculées et le générateur sequence { } pour une génération impérative personnalisée.

Vérification rapide

Comment generateSequence sait-elle quand s’arrêter ?

Récapitulatif

Vous pouvez créer des séquences avec asSequence(), sequenceOf, generateSequence (graine suivie de la valeur suivante, fin sur null) et le générateur sequence { } avec yield/yieldAll. Vous allez maintenant voir comment les opérations paresseuses évitent les listes intermédiaires.

Questions Fréquemment Posées

La leçon « Créer des séquences » est-elle gratuite ?

Oui — le texte complet de « Créer des séquences » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Créer des séquences » ?

À partir de collections et de générateurs Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Kotlin Academy ?

Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Créer des séquences » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?

Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Pourquoi utiliser des séquences
  2. Créer des séquences
  3. Opérations paresseuses
  4. Séquences ou collections
← Retour à Kotlin Academy