什么是 Kotlin 标准库?
Kotlin 标准库 (kotlin-stdlib) 是一组随语言一起提供的模块,为开发者提供日常任务的现成解决方案。与 Java 不同,在 Java 中许多事情需要手动编写或引入第三方库,而 Kotlin 提供了强大的内置工具来处理集合、字符串、流、协程和序列化。该库与 Java 完全兼容,同时扩展了其功能,使代码更加简洁和安全。
标准库的主要模块
- kotlin-stdlib — 库的核心:集合、区间、序列、标准函数 (let, apply, also, run)。
- kotlinx-coroutines — 通过协程支持异步编程。
- kotlinx-serialization — 序列化/反序列化为 JSON、Protobuf 及其他格式。
- kotlin-test — 单元测试工具。
- kotlin-reflect — 反射和运行时类型操作。
集合与序列
Kotlin 最强大的地方之一是对集合的处理。该库提供了可变 (mutable) 和不可变 (immutable) 集合。所有基本操作(过滤、转换、分组)都以扩展函数的形式实现。
示例:列表操作
val numbers = listOf(1, 2, 3, 4, 5, 6)val evenSquares = numbers .filter { it % 2 == 0 } .map { it * it } .sortedDescending()println(evenSquares) // [36, 16, 4]在这个例子中,我们使用了方法链:过滤、转换和排序。所有操作都是惰性执行的,直到调用终端操作(本例中为打印)。对于大型数据集,建议使用 Sequence。
用于惰性计算的序列
val largeList = (1..1_000_000).toList()val result = largeList.asSequence() .filter { it % 2 == 0 } .map { it * 2 } .take(10) .toList()println(result) // [4, 8, 12, 20, 24, 28, 32, 36, 40]与普通集合不同,Sequence 不会创建中间列表,从而在处理大量数据时节省内存。
协程:无痛的异步编程
kotlinx-coroutines 模块是 Kotlin 中处理异步代码的标准方式。它取代了回调和 RxJava,提供了简单的顺序语法。
简单的协程示例
import kotlinx.coroutines.*
fun main() = runBlocking { val result = async { delay(1000L) "完成!" } println("等待中...") println(result.await()) // 1秒后输出 "完成!"}关键概念:
runBlocking— 阻塞当前线程直到协程完成(用于 main 函数)。async— 启动一个协程并返回Deferred(类似于 Future)。await— 挂起协程直到获取结果。
结构化并发
fun main() = runBlocking { launch { repeat(3) { i -> delay(500L) println("任务 $i 完成") } } println("主协程继续运行")}得益于结构化并发,所有子协程在父协程完成时自动结束。这防止了内存泄漏并使代码可预测。
数据序列化 (kotlinx.serialization)
kotlinx-serialization 模块允许将 Kotlin 对象转换为 JSON、XML、Protobuf 等格式,而无需使用反射。序列化在编译阶段进行,使其快速且安全。