arrays - 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)
}
}
解决方案
是的,您可以使用mapIndexedNotNull
:
arr.mapIndexedNotNull { index, elem -> if (elem == 2) index else null }
推荐阅读
- mysql - GraphQL Mutation 不允许我将数据添加到具有非空违规错误的 mysql 表中
- ios - __NSCFType _referenceView 异常
- c# - Visual C# 如果文本框等于 1 打开表单 1 如果文本框等于 2 打开表单 2
- gatsby - 如何在一个域中合并 2 个 Gatsby 站点?
- wordpress - Wordpress 产品属性自定义永久链接
- applescript - Automator (2.5) 脚本根据文件名创建文件夹并将文件移动到文件夹
- javascript - Javascript中的超时间隔:如何结束超时
- javascript - 解码 JSON,包括 JavaScript 中 URL 参数的数组
- node.js - 将数据从 Node.js 传递到 Vue.js
- python - Scikit Learn RFECV ValueError:不支持连续