首页 > 解决方案 > Kotlin - 数组中重复元素的索引

问题描述

有没有一种简单的方法可以在不编写 for 循环然后收集索引的情况下获取数组中匹配元素的索引?

Eg: val arr = arrayOf<Int>(2,3,4,2,5,2,6,3,2)

Output: For element 2, output should be (0,3,5,8) and For element 3, output should be (1,7)

Kotlin 提供 indexOf(element) ,它返回第一个索引,然后 lastIndexOf(element) 将给我最后一个索引。我正在寻找一种简单的方法来获取所有匹配元素的索引。

我的解决方案:迭代数组和收集索引的标准解决方案。

var indexArrOf2 = mutableListOf<Int>()
var indexArrOf3 = mutableListOf<Int>()
for(i in arr.indices) {
  if (arr[i] == 2) {
    indexArrOf2.add(i)
  }
  if (arr[i] == 3) {
    indexArrOf3.add(i)
  }
}

标签: arrayskotlin

解决方案


是的,您可以使用mapIndexedNotNull

arr.mapIndexedNotNull { index, elem -> if (elem == 2) index else null }

推荐阅读