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

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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值