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

Kotlin中list.all()与list.any()是否支持列表短路求值?

Kotlin中list.all()与list.any()的短路求值特性

不会对列表中所有对象进行求值,这两个函数都采用短路求值逻辑——只要能提前确定最终结果,就会立即停止遍历后续元素。

关于all()的行为

all()函数的逻辑是:只有当列表中所有元素都满足给定条件时,才返回true。一旦遇到第一个不满足条件的元素,就会直接返回false,不再处理剩余元素。

以你给出的示例为例:

val myList = listOf(1, 8, 11, 13, 15)
val allOdd = myList.all { it % 2 == 1 }

当检查到第二个元素8时,发现它不满足it%2 ==1的条件,函数会立刻返回false,不会再对11、13、15进行求值。

你可以通过添加打印语句验证这一点:

val myList = listOf(1, 8, 11, 13, 15)
val allOdd = myList.all { 
    println("正在检查元素: $it")
    it % 2 == 1 
}
println("allOdd 的结果: $allOdd")

运行后输出:

正在检查元素: 1
正在检查元素: 8
allOdd 的结果: false

关于any()的行为

any()函数的逻辑是:只要列表中存在至少一个元素满足给定条件,就返回true。一旦遇到第一个满足条件的元素,就会直接返回true,不再处理剩余元素。

示例验证:

val myList = listOf(2, 4, 5, 6)
val hasOdd = myList.any {
    println("正在检查元素: $it")
    it % 2 == 1
}
println("hasOdd 的结果: $hasOdd")

运行后输出:

正在检查元素: 2
正在检查元素: 4
正在检查元素: 5
hasOdd 的结果: true

可以看到,检查到元素5满足条件后,函数立即停止,没有处理后续的6。

实际意义

这种短路特性在处理包含高开销操作的列表时尤为关键——比如lambda中涉及复杂计算、网络请求或文件IO的场景,能避免不必要的资源消耗,提升代码性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:12:34