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

Groovy如何更简便地判断数组所有元素均包含指定子字符串

最优实现方案

Groovy 集合原生提供了every()方法,专门用于判断所有元素是否都满足指定条件,完全匹配你的需求,而且是短路求值:只要遍历到第一个不符合条件的元素就会直接返回false,不需要遍历完整个列表,比你当前用findAll再对比长度的方案效率更高,代码也更简洁。

示例代码如下:

// 符合条件的列表,返回true
def is_true = ['tmp/mydir/file1', 'tmp/mydir/file2', 'tmp/mydir/file3']
def result1 = is_true.every { it.contains('tmp/mydir') }
assert result1 == true

// 存在不符合的列表,返回false
def is_false =  ['otherdir/file1', 'tmp/file2', 'tmp/file3']
def result2 = is_false.every { it.contains('tmp/mydir') }
assert result2 == false

方案优势对比

你当前的findAll实现需要遍历完整个列表,把所有符合条件的元素筛选出来之后再对比数组长度,当列表元素量级较大时会有不必要的性能开销。而every()方法在遇到第一个不满足条件的元素时就会终止遍历,最坏情况(所有元素都符合条件)下才会遍历完整列表,性能表现更优,代码可读性也更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:15:06