Kotlin 中集合遍历有哪几种方式?

发布于:2025-05-30 ⋅ 阅读:(16) ⋅ 点赞:(0)

1 for-in 循环(最常用)

val list = listOf("A", "B", "C")
for (item in list) {
    print("$item ")
}

// A B C 

2 forEach 高阶函数

val list = listOf("A", "B", "C")
list.forEach { item ->
    print("$item ")
}

// A B C 

3 带索引遍历

3.1 使用 forEachIndexed
val list = listOf("A", "B", "C")
list.forEachIndexed { index, item ->
    println("$index - $item")
}

// 0 - A
// 1 - B
// 2 - C
3.2 使用 withIndex() + for-in

使用 withIndex() 生成包含索引和值的迭代器。

val list = listOf("A", "B", "C")
for ((index, item) in list.withIndex()) {
    println("$index - $item")
}

// 0 - A
// 1 - B
// 2 - C
4 传统索引遍历(适用于 List

通过集合的 indices 属性获取索引范围。

val list = listOf("A", "B", "C")
for (i in list.indices) { // 
    println("${list[i]} at $i")
}

// A at 0
// B at 1
// C at 2

5 迭代器(iterator

val list = listOf("A", "B", "C")
val iterator = list.iterator()
while (iterator.hasNext()) {
    print("${iterator.next()} ")
}

// A B C 

6 List 专用:双向遍历(ListIterator

val list = listOf("A", "B", "C")
val listIterator = list.listIterator()
while (listIterator.hasNext()) {
    print("${listIterator.next()} ")
}

println()

while (listIterator.hasPrevious()) {
    print("${listIterator.previous()} ")
}

// A B C 
// C B A 

7 while 循环(手动控制索引)

val list = listOf("A", "B", "C")
var i = 0
while (i < list.size) {
    print("${list[i]} ")
    i++
}
// A B C 

8 map 遍历转换(返回新集合)

val list = listOf("A", "B", "C")
val newList = list.map { item ->
    "Item: $item"
}
println(newList)

// [Item: A, Item: B, Item: C]

9 区间遍历(for + until/downTo

适用于需要自定义步长或方向的场景:

val list = listOf("A", "B", "C")
for (i in 0 until list.size) {
    print("${list[i]} ")
}
// A B C 

val list = listOf("A", "B", "C")
for (i in list.size - 1 downTo 0) {
    print("${list[i]} ")
}
// C B A 

val list = listOf("A", "B", "C")
for (i in 0 until list.size step 2) { // 指定步长
    print("${list[i]} ")
}

// A C 

10 不同场景推荐

  • 简单遍历:for-inforEach
  • 需要索引:forEachIndexedwithIndex
  • 逆序遍历:reversed() + for-in
  • 需要删除元素:使用 MutableIterator(在迭代中安全删除)
val list = listOf("A", "B", "C")
for (item in list.reversed()) {
    print("$item ")
}

// C B A 

val mutableList = mutableListOf("A", "B", "C")
val iterator = mutableList.iterator()
while (iterator.hasNext()) {
    if (iterator.next() == "B") iterator.remove()
}
println(mutableList)

// [A, C]

网站公告

今日签到

点亮在社区的每一天
去签到