Kotlin的for关键字
最后修改于 2025 年 4 月 19 日
Kotlin的for循环提供了一种简洁的方式来迭代范围、数组、集合和其他可迭代对象。 for 关键字是循环操作的核心。 本教程通过实际例子深入探讨了 for 关键字。
基本定义
Kotlin中的 for 关键字用于迭代。 它适用于任何提供迭代器的对象。 与某些语言不同,Kotlin的for循环始终用于在范围或集合上进行迭代。
迭代一个范围
for 的最简单用法是迭代一个数字范围。 Kotlin 提供了 .. 运算符来创建可在for循环中使用的范围。
package com.zetcode
fun main() {
for (i in 1..5) {
println(i)
}
}
此示例打印从 1 到 5 的数字。 1..5 创建一个包含范围。 循环变量 i 依次取范围内的每个值。 这是Kotlin中最基本的for循环形式。
使用步长迭代一个范围
Kotlin允许在迭代范围时指定步长值。 这控制了迭代中连续值之间的增量。
package com.zetcode
fun main() {
for (i in 1..10 step 2) {
println(i)
}
}
在这里,我们打印 1 到 10 之间的奇数。 step 2 修饰符使循环以 2 而不是 1 为增量。 当您需要在迭代期间跳过元素时,这很有用。
迭代一个数组
for 循环可以迭代数组和其他集合。 语法与范围相同,使其在不同的可迭代类型中保持一致。
package com.zetcode
fun main() {
val fruits = arrayOf("Apple", "Banana", "Cherry")
for (fruit in fruits) {
println(fruit)
}
}
此示例迭代一个字符串数组。 循环变量 fruit 依次取每个数组元素。 相同的语法适用于列表、集合和其他集合类型。
使用索引迭代
有时您需要在迭代过程中同时获取元素及其索引。 Kotlin为此提供了 withIndex 函数。
package com.zetcode
fun main() {
val colors = listOf("Red", "Green", "Blue")
for ((index, color) in colors.withIndex()) {
println("$index: $color")
}
}
在这里,我们使用解构来在每次迭代中获取索引和值。 withIndex 函数返回一个索引-值对的可迭代对象。 这比手动管理计数器变量更清晰。
迭代一个Map
可以使用 for 循环迭代Map,并使用解构来访问键和值。 Kotlin 提供了几种迭代map条目的方法。
package com.zetcode
fun main() {
val map = mapOf(1 to "One", 2 to "Two", 3 to "Three")
for ((key, value) in map) {
println("$key = $value")
}
}
此示例演示了使用解构的map迭代。 每个map条目都被分解为 key 和 value 组件。 相同的语法适用于可变和不可变map。
迭代一个字符串
字符串在Kotlin中是可迭代的,允许您使用 for 循环处理字符串中的每个字符。 这对于逐字符处理很有用。
package com.zetcode
fun main() {
val text = "Kotlin"
for (ch in text) {
println(ch)
}
}
在这里,我们迭代字符串“Kotlin”中的每个字符。 循环变量 ch 依次取每个字符。 这种方法比使用传统的索引访问更清晰。
自定义迭代器
您可以通过实现 Iterator 接口使任何类可迭代。 这允许您的自定义类型与 for 循环一起使用。
package com.zetcode
class Countdown(val start: Int) : Iterable<Int> {
override fun iterator(): Iterator<Int> {
return object : Iterator<Int> {
var current = start
override fun hasNext() = current > 0
override fun next() = current--
}
}
}
fun main() {
for (i in Countdown(5)) {
println(i)
}
}
此示例创建一个自定义倒计时迭代器。 Countdown 类实现了 Iterable,允许它在for循环中使用。 循环打印从 5 到 1 的数字。
For循环的最佳实践
- 首选 for 而不是 while: 当迭代次数已知或从集合派生时,使用 for。
- 使用有意义的名称: 为循环变量选择描述性名称以提高可读性。
- 利用解构: 当您需要索引和值或键和值时,使用解构。
- 考虑函数式替代方案: 对于简单的转换,请考虑使用
forEach或其他集合函数。 - 优化范围: 适当使用
until用于独占范围,使用downTo用于降序迭代。
来源
本教程深入介绍了Kotlin的 for 关键字,展示了各种迭代场景,包括范围、集合和自定义迭代器。 for循环是一个基本结构,它使Kotlin中的迭代简洁易读。
作者
列出 所有 Kotlin 教程。