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-in
或forEach
- 需要索引:
forEachIndexed
或withIndex
- 逆序遍歷:
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]