我不确定groovy中的removeAll是如何工作的,但我希望这会返回[40289454470ea94601470ea977d00018]
def list = ['40289454470ea94601470ea977b20014', '40289454470ea94601470ea977d00018']
def list2 = ['40289454470ea94601470ea977b20014']
list.removeAll {
list2
}
println list
但它会返回[]
请指教:(答案 0 :(得分:8)
removeAll删除了闭包为
返回true的每个元素list2在groovy真理下强制执行,因为它不是空的所以你的代码会删除所有内容
尝试
list1 -= list2
答案 1 :(得分:1)
不应使用removeAll
闭包,而应使用removeAll
方法。
list.removeAll {
list2
}
关闭的方式:
list.removeAll {
list2.contains(it)
}
如果list2
包含此元素,则会将其从list