Les Séquences en Kotlin

Qu'est-ce qu'une Séquence ?

Les séquences en Kotlin représentent un type de collection qui offre des fonctionnalités communément associées à d'autres types de collections, tout en traitant les données de manière paresseuse et efficace. Cette approche paresseuse est particulièrement bénéfique lors du traitement de collections volumineuses.

Contrairement à un tableau ou une liste qui imprègnent tous leurs éléments en mémoire, une séquence génère ses éléments en temps réel, uniquement lorsqu'ils sont requis.

Comment créer une Séquence ?

Il existe différentes méthodes pour créer une séquence. Voici quelques-unes des possibilités :

val nombres = sequenceOf(2, 8, 3, 7, 10)

val lettres = listOf("A", "B", "C")
val sequenceLettres = lettres.asSequence()

val sequenceCarres = generateSequence(2) { if(it < 20) it * it else null }

Une séquence peut être constituée en utilisant la méthode sequenceOf() pour passer directement les éléments.

Une autre option est de convertir une collection existante, comme un tableau ou une liste, en une séquence avec la fonction d'extension asSequence().

Enfin, il est possible de générer une séquence via la fonction generateSequence(), qui prend une valeur de départ et une fonction lambda.

Exemple de Séquence

Dans cet exemple, la fonction generateSequence() prend pour point de départ la valeur 2, puis applique une fonction qui augmente cette valeur de 2 à chaque itération. Ainsi, il est possible de créer une séquence infinie de nombres pairs.

Pour n'afficher que les dix premiers éléments de cette séquence dans la console, on les extrait grâce à la fonction take(10) et on les stocke dans la variable premiersDixPairs.

fun main() {
    val nombresPairs = generateSequence(2) { it + 2 }
    val premiersDixPairs = nombresPairs.take(10).toList()
    println(premiersDixPairs)
}

Le résultat de cet exemple serait :

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]