You need to enable JavaScript to run this app. Kotlin中如何从嵌套列表指定索引提取元素生成新列表
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何从嵌套列表指定索引提取元素生成新列表

Kotlin 嵌套列表提取指定索引元素实现方案

基础实现

Kotlin 标准库的集合扩展函数可以直接满足需求,代码简洁且性能经过官方优化:

val list1 = listOf('a', 'b', 'c', 'e')
val list2 = listOf(1, 2, 3, 4)
val list3 = listOf('!', '@', '#', '$')
val input = listOf(list1, list2, list3)
val targetIndex = 2

// 核心逻辑,一行即可完成
val result = input.map { it[targetIndex] }
println(result) // 输出:[c, 3, #]

安全增强版本

如果存在子列表长度小于目标索引的场景,可增加异常处理避免索引越界:

// 方案1:跳过长度不足的子列表,返回非空结果
val safeResult = input.mapNotNull { subList -> subList.getOrNull(targetIndex) }

// 方案2:子列表长度不足时返回自定义默认值
val resultWithDefault = input.map { subList ->
    subList.getOrElse(targetIndex) { "缺省值" }
}

性能相关说明

不存在本质上比遍历更优的实现方案。该需求需要访问外层列表中的每一个子列表来提取指定位置元素,时间复杂度固定为O(n)(n为外层列表长度),和遍历开销完全一致。
Kotlin 标准库的map函数底层做了成熟优化,和手动写for循环的性能没有明显差异,同时代码可读性更高,是更推荐的实现方式。


额外优化建议

  • 若使用支持随机访问的列表实现(如ArrayList),子列表索引访问开销为O(1),整体效率最高
  • 若子列表为不支持随机访问的链表结构,单次索引访问开销为O(k)(k为目标索引值),高频操作场景下建议先调整数据结构降低访问开销

内容的提问来源于stack exchange,提问作者RanH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 14:36:04