使用标准库迭代和转换集合
通过实际的集合示例使用 map、filter、any、all 和 count。
使用标准库迭代和转换集合 是 CoddyKit 上的免费 Kotlin Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Kotlin Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Kotlin Academy 课程共包含 4 节课。
集合作为处理管道
Kotlin 标准库会通过链式操作转换集合。每个函数都会返回一个新集合,原集合不会改变。
映射:一对一转换
映射会对每个元素应用一个函数,并返回结果列表。
val prices = listOf(10, 20, 30)
val withTax = prices.map { it * 1.1 }
println(withTax) // [11.0, 22.0, 33.0]flatMap:一对多
flatMap 会将每个元素映射为一个列表,然后把所有列表展平成一个列表。
val sentences = listOf("hello world", "foo bar")
val words = sentences.flatMap { it.split(" ") }
println(words) // [hello, world, foo, bar]filter 与 filterNot
过滤会保留符合谓词的元素;filterNot 会保留不符合谓词的元素。
val nums = (1..10).toList()
val evens = nums.filter { it % 2 == 0 }
val odds = nums.filterNot { it % 2 == 0 }
println(evens) // [2, 4, 6, 8, 10]groupBy:按键分组
groupBy 会返回一个 Map>,其中元素按照键函数的结果进行分组。
val words = listOf("one", "two", "three", "four", "five")
val byLength = words.groupBy { it.length }
println(byLength)
// {3=[one, two], 5=[three], 4=[four, five]}关联与 associateBy
关联会通过键值对 lambda 构建 Map。associateBy 会使用键提取函数。
val items = listOf("apple", "banana", "cherry")
val byFirst = items.associateBy { it.first() }
println(byFirst) // {a=apple, b=banana, c=cherry}partition:拆分为两部分
partition 会将集合拆分为两个列表:匹配的元素和不匹配的元素。
val (evens, odds) = (1..8).partition { it % 2 == 0 }
println(evens) // [2, 4, 6, 8]
println(odds) // [1, 3, 5, 7]distinct 与 distinctBy
distinct 会删除重复元素。distinctBy 会根据键删除重复元素。
val nums = listOf(1, 2, 2, 3, 1, 4)
println(nums.distinct()) // [1, 2, 3, 4]
val words = listOf("Hi", "hello", "HI")
println(words.distinctBy { it.lowercase() })获取、drop 与 chunked
获取前 N 个元素;drop 跳过前 N 个元素;chunked 将集合拆分为大小为 N 的子列表。
val list = (1..10).toList()
println(list.take(3)) // [1, 2, 3]
println(list.drop(7)) // [8, 9, 10]
println(list.chunked(3)) // [[1,2,3],[4,5,6],[7,8,9],[10]]zip:配对两个集合
zip 会将两个列表组合成一个键值对列表,并在较短的列表处停止。
val names = listOf("Alice", "Bob", "Charlie")
val scores = listOf(90, 85, 92)
val combined = names.zip(scores)
println(combined) // [(Alice, 90), (Bob, 85), (Charlie, 92)]sumOf、minOf、maxOf、averageOf
使用转换函数进行聚合的快捷方式。
val items = listOf("apple", "banana", "cherry")
println(items.sumOf { it.length }) // 18
println(items.maxOf { it.length }) // 6
println(items.minOf { it.length }) // 5快速检查
哪个函数会根据键选择器将集合分组为 Map>?
回顾
映射、flatMap、过滤、groupBy、关联、partition、去重、zip——这是集合转换的核心工具集。请将它们链接起来,构建表达力强的处理管道。接下来:类与构造函数!
常见问题解答
「使用标准库迭代和转换集合」课时是免费的吗?
是的 — 「使用标准库迭代和转换集合」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Kotlin Academy 课程的其余内容,请升级到 CoddyKit PRO。 Kotlin Academy 课程共包含 4 节课。
「使用标准库迭代和转换集合」这节课中我会学到什么?
通过实际的集合示例使用 map、filter、any、all 和 count。 你通过在浏览器中直接运行的动手代码来练习 Kotlin Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Kotlin Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Kotlin Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「使用标准库迭代和转换集合」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Kotlin Academy 课中编写并运行代码吗?
能。每节 Kotlin Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。