Java Groovy比较列表并删除Jenkins错误中的contains
我在詹金斯经营groovy。我有两个列表是从sh脚本创建的。我需要格式化列表1中的每个项目,然后检查该值是否在列表2中。如果是,我想从列表2中删除它 起初,我在使用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。如果
.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}”作为字符串