我有一份名单
def a = [kitkat lollypop orea android-11]另一份清单
def b = ["kitkat", "lollypop", "honeycomb", "nougat", "android-11"]如果a项存在于列表b中,如果它们不存在于列表b中,那么我需要在列表a上执行一些任务,然后做其他的事情。
需要注意的一点是,list a项是用空格分隔的,没有引号,而list be是用逗号分隔的,并且在引号中有条目;由于这个原因,我尝试了下面的操作,但没有起作用。
我尝试了以下几点: 1)
a.split(" ").each{
def itema = it
b.split(",").each{
if(b.contains(itema){
//do something
}
}
//do something else
)a.split(" ").each{
if(b.split(",").contains(it){
//do something
}
//do something else
}for(itema in a){
for(itemb in b){
if(itema == itemb){
//do something
}
}
//do something else
}a.intersect(b) 但这会引发异常,因为列出了元素之间的有空格。
我想我想要的是从list a创建一个新的列表,方法是将它更改为带有引号的逗号分隔项,然后可以使用上面的解决方案之一,或者在groovy中有更好的方法来实现我想要的吗?
发布于 2021-10-29 04:19:53
在示例1和例2中,您几乎可以看到,但是有几个问题。
我假设:
def a = [kitkat lollypop orea android-11]实际上是一个字符串,基于您试图拆分它的方式。在我的解决方案中,我将假设如下:
def a = "[kitkat lollypop orea android-11]"使用'a‘中的字符串,取两个括号之间的所有内容。然后,将字符串拆分为空格字符,以获得项的列表。然后,使用这个新项目列表,我们将一个一个地遍历列表b,看看是否有匹配项:
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"
}
}这将导致:
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-11https://stackoverflow.com/questions/69747816
复制相似问题