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}"
}
}
Run Code Online (Sandbox Code Playgroud)
我想检查big list(list)是否包含sublist(l)的所有元素是否groovy有任何内置方法来检查这个或我在上面的代码中会有什么?
Chr*_*orf 25
您可以使用Groovy的Collection.intersect(Collection right)方法并检查返回的Collection是否与作为参数传递的Collection一样大.
您必须先使用该String.tokenize()方法从String生成List,而不是String.split()返回String数组:
def sublist = ["My", "Homer"]
def list = "Hi My Name is Homer".tokenize()
assert sublist.size() == list.intersect(sublist).size()
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用Groovy的Object.every(Closure closure)方法并检查子列表中的每个元素是否包含在列表中:
assert sublist.every { list.contains(it) }
Run Code Online (Sandbox Code Playgroud)
但是,最简单的方法是使用标准的Java Collection API:
assert list.containsAll(sublist)
Run Code Online (Sandbox Code Playgroud)
小智 7
最简单的方法就是调用:
list.containsAll(l)
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到有关它的更多信息:Groovy Collections