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

SparseArray键存在性检查及指定键元素删除方法咨询

关于SparseArray的两个常见问题解答

问题一:如何简便检查SparseArray中是否存在指定键?

确实,SparseArray没有直接提供containsKey()方法,但我们可以利用它自带的indexOfKey(key: Int)方法来实现这个功能——当返回值为-1时,说明键不存在;反之则存在。

如果你想让代码更直观,完全可以给SparseArray写个扩展函数,用起来和HashMap的containsKey()一模一样:

// Kotlin扩展函数,全局或局部定义都可以
fun SparseArray<*>.containsKey(key: Int): Boolean {
    return indexOfKey(key) != -1
}

之后直接调用sparseArray.containsKey(id.toInt())就能快速判断键是否存在了。

问题二:如何正确实现「键存在则删除对应元素」的需求?

你当前的代码存在两个小问题:

  1. 判断sparseArray!!.size()>0完全没必要——数组不为空不代表目标键一定存在;
  2. 如果indexOfKey(id.toInt())返回-1(键不存在),调用removeAt(-1)会直接抛出异常。

其实SparseArray本身就提供了更简单安全的解决方案:直接使用remove(key: Int)方法!这个方法会自动处理键不存在的情况(不会报错,也不会执行任何无效操作),所以你只需要一行代码就能完成需求:

sparseArray?.remove(id.toInt())

如果一定要用索引的方式实现,正确的写法应该是先判断索引是否合法:

val key = id.toInt()
val index = sparseArray?.indexOfKey(key) ?: -1
if (index != -1) {
    sparseArray?.removeAt(index)
}

不过显然直接调用remove(key)更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:07:43