Kotlin 中的 for 循环语法简洁灵活,支持多种遍历场景,核心是基于 “迭代器(Iterator)” 或 “范围(Range)” 进行循环,以下是常见用法:
1. 遍历范围(Range)
通过 .. 定义整数范围,直接遍历数值:
kotlin
// 遍历 1 到 5(包含 5)
for (i in 1..5) {
println(i) // 1, 2, 3, 4, 5
}
// 倒序遍历(downTo)
for (i in 5 downTo 1) {
println(i) // 5, 4, 3, 2, 1
}
// 步长遍历(step)
for (i in 1..10 step 2) {
println(i) // 1, 3, 5, 7, 9
}
// 半开范围(until,不包含终点)
for (i in 1 until 5) {
println(i) // 1, 2, 3, 4(不含 5)
}
2. 遍历集合 / 数组
直接遍历集合、数组中的元素(最常用):
kotlin
val list = listOf("Kotlin", "Java", "Python")
val array = arrayOf(10, 20, 30)
// 遍历集合元素
for (lang in list) {
println(lang) // Kotlin, Java, Python
}
// 遍历数组元素
for (num in array) {
println(num) // 10, 20, 30
}
3. 遍历索引与元素
需要同时获取索引和对应元素时,用 withIndex():
kotlin
val fruits = arrayOf("苹果", "香蕉", "橙子")
for ((index, fruit) in fruits.withIndex()) {
println("索引 $index: $fruit")
// 输出:
// 索引 0: 苹果
// 索引 1: 香蕉
// 索引 2: 橙子
}
4. 遍历映射(Map)
遍历 Map 时,可直接获取键值对(key to value):
kotlin
val map = mapOf("name" to "Alice", "age" to 25)
for ((key, value) in map) {
println("$key: $value")
// 输出:
// name: Alice
// age: 25
}
5. 跳出循环(break/continue)
与其他语言类似,用 break 终止循环,continue 跳过当前迭代:
kotlin
for (i in 1..10) {
if (i == 3) continue // 跳过 3
if (i == 7) break // 遇到 7 终止循环
println(i) // 1, 2, 4, 5, 6
}
6. 标签(Label)控制嵌套循环
嵌套循环中,用标签指定要操作的循环:
kotlin
outer@ for (i in 1..3) {
inner@ for (j in 1..3) {
if (i == 2 && j == 2) {
break@outer // 终止 outer 循环
}
println("i=$i, j=$j")
}
}
// 输出:
// i=1, j=1
// i=1, j=2
// i=1, j=3
// i=2, j=1
核心特点
- Kotlin 的
for循环不支持传统 C 风格的for (i=0; i<5; i++),而是通过范围、迭代器实现,更简洁安全。 - 所有可迭代对象(集合、数组、范围等)都能直接用
for-in遍历,无需手动管理索引。
根据场景选择合适的遍历方式,可大幅简化代码(例如遍历集合时,优先用 for (item in collection) 而非索引循环)。