You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy的findIndexValues方法是否存在对应的Kotlin等效实现?

Kotlin标准库没有提供和Groovy的findIndexValues完全同名的内置方法,但可以通过现有标准库函数非常简便地实现同等效果,不需要手动遍历列表收集索引。

原生实现方式(无需自定义扩展)

有两种常用的简洁写法:

  • 搭配withIndex()拆分索引与元素后过滤
val list = listOf("a", "b", "c", "b")
// 筛选出所有值为"b"的元素索引
val targetIndices = list.withIndex()
    .filter { it.value == "b" }
    .map { it.index }
// 执行结果为 [1, 3]
  • 用mapIndexedNotNull直接返回匹配的索引,写法更精简
val targetIndices = list.mapIndexedNotNull { index, value ->
    // 匹配时返回索引,不匹配时返回null,最终结果会自动过滤掉null值
    if (value == "b") index else null
}

封装为通用扩展函数

如果需要和GroovyfindIndexValues一致的调用体验,可以把逻辑封装为扩展函数,适配所有可迭代集合,比示例中仅支持List的版本适用范围更广:

fun <T> Iterable<T>.findIndexValues(predicate: (T) -> Boolean): List<Int> =
    mapIndexedNotNull { index, element -> index.takeIf { predicate(element) } }

调用示例:

val indices = listOf(1,2,3,4,5).findIndexValues { it % 2 == 0 }
// 执行结果为 [1, 3]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:27:03