Java Groovy比较列表并删除Jenkins错误中的contains

Java Groovy比较列表并删除Jenkins错误中的contains,java,jenkins,groovy,Java,Jenkins,Groovy,我在詹金斯经营groovy。我有两个列表是从sh脚本创建的。我需要格式化列表1中的每个项目,然后检查该值是否在列表2中。如果是,我想从列表2中删除它 起初,我在使用.remove()时遇到了很多问题,因此我尝试了.split()as List和tokenize()的不同实现,以避免方法的无签名:java.util.ArrayList.remove()适用于参数类型:(java.lang.String)值: 问题是,当我执行list2.contains(newName)时,它会给出false。如果

我在詹金斯经营groovy。我有两个列表是从sh脚本创建的。我需要格式化列表1中的每个项目,然后检查该值是否在列表2中。如果是,我想从列表2中删除它

起初,我在使用
.remove()
时遇到了很多问题,因此我尝试了
.split()as List
tokenize()
的不同实现,以避免方法的
无签名:java.util.ArrayList.remove()适用于参数类型:(java.lang.String)值:

问题是,当我执行
list2.contains(newName)
时,它会给出false。如果我不按列表执行
,我会得到正确答案,但由于上述原因,我无法使用
.remove()
。我还尝试使用
removeIf
函数,但得到
groovy.lang.MissingMethodException:没有方法签名:java.util.ArrayList.removeIf()适用于参数类型:(org.jenkinsci.plugins.workflow.cps.CpsClosure2)值:[org.jenkinsci.plugins.workflow.cps]。CpsClosure2@3ab421bf]

谢谢你的帮助,我快疯了

def list1 = []
def list2 = []

list1 = sh(script: """myscript""", returnStdout: true).split() as List
list2 = sh(script: """myscript""", returnStdout: true).tokenize()

list1.each { i -> 
    newName = "test-${i}"
    if (list2.contains(newName)) {
        list2.remove(newName) 
}
echo "${list2} // This doesn't change in Jenkins even when it should because the if statement isn't working.
          
            
 //Instead of if statement I've also tried:
 //chartList.removeIf { k -> k == chartName}
我也检查了我的课程:

println(list1.getClass())
> class java.util.ArrayList
println (list2.getClass())
> class java.util.ArrayList
Groovy Playway使用removeIf和我的if语句,这就是我如何知道它一定是Jenkins的东西

def list1 = []
def list2 = []

list1 = ['orange', 'lime']
list2 = ['apple', 'orange', 'banana', 'pear']

list1.each { i ->

list2.removeIf { it -> it == i }

    //This also works:
       // if (chartList.contains(i)) {

       //     chartList.remove(i)
      
       // }
}
println list2

不确定这是否与其他节点相关:在groovy中
list2-list1
应该可以工作。使用
将“test-${i}”作为字符串