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

在Kotlin中如何判断数组包含任一指定值?求惯用实现方式

Kotlin中判断数组是否包含多值的惯用写法

嘿,这问题问到点子上了!在Kotlin里,要判断数组是否包含多个目标值中的任意一个,除了链式的||判断,最地道、符合惯用风格的写法是借助标准库的any()高阶函数配合集合操作,具体有两种常用方式:

方式一:借助目标集合的contains方法

val arr = intArrayOf(1, 2, 3)
val targets = setOf(2, 3)
if (arr.any(targets::contains)) {
    println("in list")
}

方式二:内嵌集合判断(更紧凑)

val arr = intArrayOf(1, 2, 3)
if (arr.any { it in setOf(2, 3) }) {
    println("in list")
}

为什么说这是惯用风格?

  • 语义清晰:any()函数的作用就是判断集合/数组中是否存在满足条件的元素,读起来就像“数组里有没有任意一个元素在目标集合里”,非常直观。
  • 扩展性强:如果后续要增加更多目标值,只需要在setOf()里添加元素就行,不像链式||那样要不断追加判断,维护起来更方便。
  • 效率更优:用setOf()存储目标值,其contains操作是O(1)时间复杂度,比用列表更高效,尤其是目标值数量较多时。

当然还有一种交集判断的方式:

if ((arr.toSet() intersect setOf(2, 3)).isNotEmpty()) {
    println("in list")
}

但这种方式需要先把数组转成集合,会额外遍历一次数组,性能上不如any()直接遍历判断,所以除非你本来就需要用到交集结果,否则优先选前面两种any()的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:06:02