map et flatMap : transformer chaque élément
Transformez des collections avec map et aplatissez les résultats imbriqués avec flatMap.
map et flatMap : transformer chaque élément est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 1 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.
Notions de base des transformations
map applique une fonction à chaque élément et renvoie une nouvelle collection de même taille. flatMap fait de même, mais aplatit les listes de listes en une seule liste.
Transformation de base
Transformez chaque élément avec une lambda ; le résultat a la même taille que l’entrée.
fun main() {
val nums = listOf(1, 2, 3, 4)
val squares = nums.map { it * it }
println(squares) // [1, 4, 9, 16]
}La transformation modifie le type
Le type des éléments de sortie peut différer de celui des éléments d’entrée : List<Int> peut devenir List<String>.
fun main() {
val nums = listOf(1, 2, 3)
val labels = nums.map { "Item $it" }
println(labels)
}Transformation sur une classe de données
Extrayez une propriété de chaque élément pour transformer des classes de données en types plus simples.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Ada", 35), User("Ben", 22))
val names = users.map { it.name }
println(names) // [Ada, Ben]
}Enchaînement d’appels de transformation
Plusieurs appels à map se composent naturellement : chacun transforme la sortie du précédent.
fun main() {
val nums = listOf(1, 2, 3)
val result = nums.map { it + 1 }.map { it * 10 }
println(result) // [20, 30, 40]
}Transformation de base avec aplatissement
flatMap appelle une fonction qui renvoie une liste pour chaque élément, puis aplatit tous les résultats en une seule liste.
fun main() {
val words = listOf("hello", "world")
val chars = words.flatMap { it.toList() }
println(chars) // [h, e, l, l, o, w, o, r, l, d]
}Quand utiliser l’aplatissement
Utilisez flatMap lorsque la lambda produit naturellement une liste et que vous voulez obtenir un résultat plat plutôt qu’une liste de listes.
data class Order(val items: List<String>)
fun main() {
val orders = listOf(
Order(listOf("pen", "book")),
Order(listOf("lamp")),
Order(listOf("mug", "ring"))
)
val allItems = orders.flatMap { it.items }
println(allItems) // [pen, book, lamp, mug, ring]
}Transformation de liste contre aplatissement
Comparez les types de résultat : la transformation conserve l’imbrication, tandis que l’aplatissement la supprime.
fun main() {
val nums = listOf(1, 2, 3)
val mapped = nums.map { listOf(it, it * 10) }
val flat = nums.flatMap { listOf(it, it * 10) }
println(mapped) // [[1, 10], [2, 20], [3, 30]]
println(flat) // [1, 10, 2, 20, 3, 30]
}Aplatissement avec des listes conditionnelles
Renvoyez des listes vides pour les éléments que vous voulez supprimer : flatMap filtre et transforme en une seule étape.
fun main() {
val nums = listOf(1, 2, 3, 4, 5)
val doubled = nums.flatMap { if (it % 2 == 0) listOf(it, it * 2) else emptyList() }
println(doubled) // [2, 4, 4, 8]
}Transformation avec index
mapIndexed fournit à la lambda l’index et la valeur.
fun main() {
val fruits = listOf("apple", "banana", "cherry")
val labeled = fruits.mapIndexed { i, name -> "$i: $name" }
println(labeled)
}Séquence contre liste
Pour les chaînes de traitement très longues, convertissez d’abord en Sequence afin d’éviter de créer des listes intermédiaires.
fun main() {
val big = (1..100).asSequence()
.map { it + 1 }
.filter { it % 5 == 0 }
.map { it * 2 }
.toList()
println(big.take(5)) // first 5 results
}Vérification rapide
Quelle est la différence essentielle entre map et flatMap ?
Récapitulatif
La transformation transforme chaque élément (même taille, mais éventuellement nouveau type). L’aplatissement applique une fonction qui renvoie une liste, puis concatène tous les résultats. Combinez-le avec mapIndexed pour obtenir les index et utilisez Sequence pour les longues chaînes de traitement différées.
Questions Fréquemment Posées
La leçon « map et flatMap : transformer chaque élément » est-elle gratuite ?
Oui — le texte complet de « map et flatMap : transformer chaque élément » 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 « map et flatMap : transformer chaque élément » ?
Transformez des collections avec map et aplatissez les résultats imbriqués avec flatMap. 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 1 sur 4.
Combien de temps prend la leçon « map et flatMap : transformer chaque élément » ?
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
- map et flatMap : transformer chaque élément
- filter, filterNot et partition
- fold, reduce et runningFold
- Enchaîner des pipelines et éviter les listes intermédiaires avec Sequence