当前位置: 首页 > article >正文

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]
http://www.lryc.cn/news/2395013.html

相关文章:

  • 图像卷积OpenCV C/C++ 核心操作
  • LiveGBS作为下级平台GB28181国标级联2016|2022对接海康大华宇视华为政务公安内网等GB28181国标平台查看级联状态及会话
  • leetcode17.电话号码的字母组合:字符串映射与回溯的巧妙联动
  • Gartner《2025 年软件工程规划指南》报告学习心得
  • 数据库 | 使用timescaledb和大模型进行数据分析
  • 快速阅读源码
  • linux创建虚拟网卡和配置多ip
  • Java Class类文件结构
  • AI问答-Vue3+TS:reactive创建一个响应式数组,用一个新的数组对象来替换它,同时保持响应性
  • quasar electron mode如何打包无边框桌面应用程序
  • 【HW系列】—Windows日志与Linux日志分析
  • VIN码识别解析接口如何用C#进行调用?
  • 动态规划之网格图模型(一)
  • PCB设计实践(三十)地平面完整性
  • x86_64-apple-ios-simulator 错误
  • 使用ray扩展python应用之流式处理应用
  • IP证书的作用与申请全解析:从安全验证到部署实践
  • 第四十一天打卡
  • C++中指针常量和常量指针的区别
  • 深入解析向量数据库:基本原理与主流实现
  • VectorNet:自动驾驶中的向量魔法
  • PostgreSQL性能监控双雄:深入解析pg_stat_statements与pg_statsinfo
  • 【Linux系列】Linux/Unix 系统中的 CPU 使用率
  • C++语法系列之模板进阶
  • 基于图神经网络的自然语言处理:融合LangGraph与大型概念模型的情感分析实践
  • R 语言科研绘图 --- 热力图-汇总
  • 基于DFT码本的波束方向图生成MATLAB实现
  • vBulletin未认证API方法调用漏洞(CVE-2025-48827)
  • 解决访问网站提示“405 很抱歉,由于您访问的URL有可能对网站造成安全威胁,您的访问被阻断”问题
  • FeignClient发送https请求时的证书验证原理分析