Groovy 如何检查列表是否包含子列表
我想检查大列表(Groovy 如何检查列表是否包含子列表,groovy,Groovy,我想检查大列表(list)是否包含子列表(l)的所有元素 groovy是否有任何内置的方法来检查这一点,或者我在上面代码中所做的就可以了?您的解决方案可以工作。一定要考虑如果你处理的是相对较少的离散值的大数组。 < P>你可以使用Groovy的集合。交叉(集合权)< /C>方法,并检查返回的集合是否与作为参数传递的那个集合一样大。 在从字符串生成列表之前,必须使用String.tokenize()方法,而不是使用返回字符串数组的String.split(): def l = ["My", "Ho
list
)是否包含子列表(l
)的所有元素
groovy是否有任何内置的方法来检查这一点,或者我在上面代码中所做的就可以了?您的解决方案可以工作。一定要考虑如果你处理的是相对较少的离散值的大数组。 < P>你可以使用Groovy的<代码>集合。交叉(集合权)< /C>方法,并检查返回的集合是否与作为参数传递的那个集合一样大。 在从字符串生成列表之前,必须使用
String.tokenize()
方法,而不是使用返回字符串数组的String.split()
:
def l = ["My", "Homer"]
String s = "Hi My Name is Homer"
def list = s.split(" ")
println list
list.each{it ->
l.each{it1 ->
if (it == it1)
println "found ${it}"
}
}
或者,您可以使用Groovy的Object.each(Closure Closure)
方法,并检查子列表的每个元素是否包含在列表中:
def sublist = ["My", "Homer"]
def list = "Hi My Name is Homer".tokenize()
assert sublist.size() == list.intersect(sublist).size()
但是,最短的方法是使用标准Java集合API:
assert sublist.every { list.contains(it) }
最简单的方法就是调用:
assert list.containsAll(sublist)
您可以在这里找到更多信息:他不是问他的解决方案是否可行,而是问是否有任何内置函数可以用来执行此操作。
list.containsAll(l)