Bibliothèque standard Kotlin : aperçu complet
La bibliothèque standard Kotlin (stdlib) est un ensemble d'outils puissants intégrés directement dans le langage. Elle fournit tout le nécessaire pour le développement quotidien : du travail avec les collections et les chaînes de caractères aux coroutines et à la sérialisation. Contrairement à Java, Kotlin élimine le code passe-partout en proposant une syntaxe concise et expressive. Dans cet aperçu, nous allons détailler les modules clés de la stdlib avec des exemples pratiques.
1. Travail avec les collections
La bibliothèque propose des collections immuables (List, Set, Map) et mutables (MutableList, MutableSet, MutableMap) avec un riche ensemble de fonctions d'ordre supérieur.
val numbers = listOf(1, 2, 3, 4, 5)val doubled = numbers.map { it * 2 } // [2, 4, 6, 8, 10]val even = numbers.filter { it % 2 == 0 } // [2, 4]val sum = numbers.reduce { acc, i -> acc + i } // 15Fonctions clés :
map,filter,flatMap— transformation et filtragegroupBy,partition— regroupement d'élémentszip,unzip— combinaison de collectionschunked,windowed— division en parties
2. Chaînes de caractères et expressions régulières
Kotlin étend String avec des méthodes absentes en Java : suppression de préfixes/suffixes, vérification de chaîne vide, modèles.
val text = " Bonjour, Kotlin! "println(text.trim()) // "Bonjour, Kotlin!"println(text.removePrefix(" ")) // "Bonjour, Kotlin! "println(text.contains(Regex("Kotlin"))) // true
// Chaînes multilignes avec trimIndentval json = """ { "name": "Kotlin", "year": 2016 }""".trimIndent()3. Null-sécurité et opérateur Elvis
L'une des fonctionnalités clés de Kotlin est la protection intégrée contre les NPE. La bibliothèque standard fournit des fonctions d'appel sécurisé (?.let) et l'opérateur Elvis (?:).
val name: String? = getUserName()val length = name?.length ?: 0 // si name == null, alors 0name?.let { println("Le nom est $it") } // exécuté uniquement si name != null4. Coroutines (kotlinx.coroutines)
Bien que les coroutines soient formellement une bibliothèque séparée, elles sont considérées comme faisant partie de l'écosystème Kotlin. Elles permettent d'écrire du code asynchrone de manière synchrone.
import kotlinx.coroutines.*
fun main() = runBlocking { launch { delay(1000L) println("Monde!") } println("Bonjour,")}Composants principaux :
launch— lancement d'une coroutine sans valeur de retourasync— lancement avec retour d'unDeferredwithContext— changement de contexte (par exemple, vers le thread UI)- Canaux (
Channel) — pour le transfert de données entre coroutines
5. Sérialisation (kotlinx.serialization)
Prise en charge intégrée de JSON, Protobuf, CBOR et d'autres formats via des annotations.
import kotlinx.serialization.*import kotlinx.serialization.json.*
@Serializabledata class User(val name: String, val age: Int)
fun main() { val user = User("Alice", 30) val json = Json.encodeToString(user) println(json) // {"name":"Alice","age":30} val decoded = Json.decodeFromString<User>(json) println(decoded) // User(name=Alice, age=30)}6. Flux et séquences
Pour les calculs paresseux, utilisez Sequence au lieu de List — cela économise de la mémoire lors du traitement de grandes données.
val seq = generateSequence(1) { it + 1 } // séquence infinie .take(10) .filter { it % 2 == 0 } .toList()println(seq) // [2, 4, 6, 8, 10]Fonctions d'extension
Aussi dans la bibliothèque
Travailler avec les archives ZIP en Go : guide complet du package archive/zip
Files d'attente de tâches en Go : Aperçu des bibliothèques et outils
JUnit 5 pour Java : guide complet avec exemples
TypeDoc pour TypeScript : guide complet avec exemples