比较列表值并从一个列表中删除-Groovy / Java

我正在使用spock在groovy中编写一些测试,我需要检查两个大小相等的列表中的值是否正确相互映射,并且其中一个列表中没有重复的值。 我目前正在执行以下操作:

我在list1中找到一个给定的值,然后在list2中搜索它的对应值。 如果我在list2中找到相应的值,则要删除它。我对列表(list1)上的每个位置重复此操作,最后我要确认list2为空。如果list2最后不为空,则表明存在一些未删除的意外值或重复项。

我正在做以下

def list1 = ["a", "b", "c", "d"]
def list2 = ["dog", "goat", "wolf", "fox"]

list1.size() == list2.(size)

list1.size().times() {
 if (list1.contains("a")) {
  if (list2.contains("dog")) {
   println(it + " found dog.... removing")
   list2.remove("dog")
   println(list2)
  }
  if (list1.contains("b")) {
   if (list2.contains("goat")) {
    println(it + " found goat.... removing")
    list2.remove("goat")
    println(list2)
   }
  }
  if (list1.contains("c")) {
   if (list2.contains("wolf")) {
    println(it + " found wolf.... removing")
    list2.remove("wolf")
    println(list2)
   }
  }

  if (list1.contains("d")) {
  if (list2.contains("fox")) {
    println(it + " found fox.... removing")
    list2.remove("fox")
    println(list2)
   }
  }
 }
 }
list2.isEmpty()

这似乎可行,但是我想知道在groovy中是否存在更有效的方法?