Kotlin标准库:完整概述
Kotlin标准库(stdlib)是一套内置于语言中的强大工具集。它提供了日常开发所需的一切:从集合和字符串操作到协程和序列化。与Java不同,Kotlin通过提供简洁且富有表现力的语法,消除了样板代码。在本概述中,我们将通过实际示例解析stdlib的关键模块。
1. 集合操作
该库提供了不可变(List、Set、Map)和可变(MutableList、MutableSet、MutableMap)集合,并配有丰富的高阶函数集。
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 } // 15关键函数:
map、filter、flatMap— 转换与过滤groupBy、partition— 元素分组zip、unzip— 集合合并chunked、windowed— 分块处理
2. 字符串与正则表达式
Kotlin通过Java中缺失的方法扩展了String:删除前缀/后缀、空值检查、模板。
val text = " Hello, Kotlin! "println(text.trim()) // "Hello, Kotlin!"println(text.removePrefix(" ")) // "Hello, Kotlin! "println(text.contains(Regex("Kotlin"))) // true
// 带trimIndent的多行字符串val json = """ { "name": "Kotlin", "year": 2016 }""".trimIndent()3. 空安全与Elvis运算符
Kotlin的关键特性之一——内置的NPE防护。标准库提供了安全调用函数(?.let)和Elvis运算符(?:)。
val name: String? = getUserName()val length = name?.length ?: 0 // 如果name == null,则为0name?.let { println("Name is $it") } // 仅在name != null时执行4. 协程(kotlinx.coroutines)
虽然协程形式上是一个独立的库,但它们被认为是Kotlin生态系统的一部分。允许以同步方式编写异步代码。
import kotlinx.coroutines.*
fun main() = runBlocking { launch { delay(1000L) println("World!") } println("Hello,")}主要组件:
launch— 启动无返回值的协程async— 启动并返回DeferredwithContext— 切换上下文(例如,切换到UI线程)- 通道(
Channel) — 用于协程间数据传输
5. 序列化(kotlinx.serialization)
通过注解内置支持JSON、Protobuf、CBOR等格式。
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. 序列与惰性计算
对于惰性计算,使用Sequence代替List——在处理大数据时节省内存。
val seq = generateSequence(1) { it + 1 } // 无限序列 .take(10) .filter { it % 2 == 0 } .toList()println(seq) // [2, 4, 6, 8, 10]扩展函数