用瑞士军刀 API 把 for 循环全部干掉。
选不同的操作组合,立刻看每一步的输出。
同样的代码:filter { it > 2 }.map { it * 2 }.first()。看两种执行模式的不同。
list.filter { it > 2 }
.map { it * 2 }
.first()
list.asSequence()
.filter { it > 2 }
.map { it * 2 }
.first()
把单词列表用三种方式分组,看返回结构的差别。
→ Map<Char, List<String>>,每个 key 对应多个元素
→ Map<Char, String>,每个 key 只能对应 1 个元素
→ Pair<List<String>, List<String>>,严格二分
下面这段 Kotlin 替代了大约 50 行 for 循环 + HashMap 的 Java 代码。
val report = orders
.filter { it.status == "PAID" }
.groupBy { it.userId }
.mapValues { (_, list) -> list.sumOf { it.amount } }
.toList()
.sortedByDescending { (_, total) -> total }
.take(5)