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)