首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groovy:比较来自具有不同格式的两个不同列表的项

Groovy:比较来自具有不同格式的两个不同列表的项
EN

Stack Overflow用户
提问于 2021-10-28 03:08:38
回答 1查看 100关注 0票数 0

我有一份名单

代码语言:javascript
复制
def a = [kitkat lollypop orea android-11]

另一份清单

代码语言:javascript
复制
def b = ["kitkat", "lollypop", "honeycomb", "nougat", "android-11"]

如果a项存在于列表b中,如果它们不存在于列表b中,那么我需要在列表a上执行一些任务,然后做其他的事情。

需要注意的一点是,list a项是用空格分隔的,没有引号,而list be是用逗号分隔的,并且在引号中有条目;由于这个原因,我尝试了下面的操作,但没有起作用。

我尝试了以下几点: 1)

代码语言:javascript
复制
a.split(" ").each{
    def itema = it
    b.split(",").each{
        if(b.contains(itema){
            //do something
        }
    }
    //do something else
)

代码语言:javascript
复制
a.split(" ").each{
    if(b.split(",").contains(it){
        //do something
    }
    //do something else
}

代码语言:javascript
复制
for(itema in a){
    for(itemb in b){
        if(itema == itemb){
            //do something
        }
    }
    //do something else
}

代码语言:javascript
复制
a.intersect(b) 

但这会引发异常,因为列出了元素之间的有空格。

我想我想要的是从list a创建一个新的列表,方法是将它更改为带有引号的逗号分隔项,然后可以使用上面的解决方案之一,或者在groovy中有更好的方法来实现我想要的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-29 04:19:53

在示例1和例2中,您几乎可以看到,但是有几个问题。

我假设:

代码语言:javascript
复制
def a = [kitkat lollypop orea android-11]

实际上是一个字符串,基于您试图拆分它的方式。在我的解决方案中,我将假设如下:

代码语言:javascript
复制
def a = "[kitkat lollypop orea android-11]"

使用'a‘中的字符串,取两个括号之间的所有内容。然后,将字符串拆分为空格字符,以获得项的列表。然后,使用这个新项目列表,我们将一个一个地遍历列表b,看看是否有匹配项:

代码语言:javascript
复制
def items = a.takeBetween("[", "]")
items.split(/\s/).each {
   if (it in b) {
      println "I'm in list b - $it"
   } else {
      println "I'm not in list b - $it"
   }
}

这将导致:

代码语言:javascript
复制
I'm in list b - kitkat
I'm in list b - lollypop
I'm not in list b - orea
I'm in list b - android-11
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69747816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档