加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

groovy – 如何检查列表是否包含子列表

发布时间:2020-12-14 16:34:16 所属栏目:大数据 来源:网络整理
导读:def l = ["My","Homer"]String s = "Hi My Name is Homer"def list = s.split(" ")println listlist.each{it - l.each{it1 - if (it == it1) println "found ${it}" }} 我想检查大列表(列表)是否包含子列表(l)的所有元素 groovy有没有内置的方法来检查这个或
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}"
    }
}

我想检查大列表(列表)是否包含子列表(l)的所有元素
groovy有没有内置的方法来检查这个或我在上面的代码中会有什么用?

解决方法

您可以使用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()

或者,您可以使用Groovy的Object.every(Closure closure)方法并检查子列表中的每个元素是否包含在列表中:

assert sublist.every { list.contains(it) }

但是,最短的方法是使用标准的Java Collection API:

assert list.containsAll(sublist)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读