kotlin中的for循环

9 阅读2分钟

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) 而非索引循环)。