如何在arrayList过滤器中获取索引列表

Tae*_*Kim 4 filter kotlin

我想获得索引列表如下.

val a = booleanArrayOf(true,false,true,false)
Run Code Online (Sandbox Code Playgroud)

上面的代码,真正的数字是两个. - > indexList = {0,2}如何在Kotlin中获取indexList.

Tod*_*odd 11

您可以使用mapIndexed()获取索引和每个元素的值,转换为索引或null,然后删除空值...

val b: List<Int> = a.mapIndexed { i, b -> if (b) i else null }.filterNotNull().toList()
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用withIndex()函数,过滤真值,并将结果对映射到索引值.这可能会更清楚一些.

val c: List<Int> = a.withIndex().filter { it.value }.map { it.index }
Run Code Online (Sandbox Code Playgroud)