为什么Groovy列表(映射)算法不';I don’我没有按预期工作

为什么Groovy列表(映射)算法不';I don’我没有按预期工作,groovy,Groovy,我试图从一个映射列表中删除另一个列表中的元素。但是发现它并没有像我预期的那样工作。 我不明白为什么 def p1 = [1,2,3,4,5] def p2 = [1, 3, 5] assert p1[0] == p2[0] assert p1[2] == p2[1] assert p1[4] == p2[2] assert [2,4] == p1-p2 // all ok def q1 = [[1],[2],[3],[4],[5]] def q2 = [[1], [3], [5

我试图从一个映射列表中删除另一个列表中的元素。但是发现它并没有像我预期的那样工作。 我不明白为什么

def p1 = [1,2,3,4,5]
def p2 = [1,  3,  5]
assert p1[0] == p2[0]
assert p1[2] == p2[1]
assert p1[4] == p2[2]
assert [2,4] == p1-p2 // all ok

def q1 = [[1],[2],[3],[4],[5]]
def q2 = [[1],    [3],    [5]]
assert q1[0] == q2[0]
assert q1[2] == q2[1]
assert q1[4] == q2[2]
assert [[2], [4]] == q1-q2 // all ok

def t1 = [[1,2,3], [4,5,6], [7,8,9], [10,11,12], [13,14,15]]
def t2 = [[1,2,3],          [7,8,9],             [13,14,15]]
assert t1[0] == t2[0]
assert t1[2] == t2[1]
assert t1[4] == t2[2]
assert [[4,5,6], [10,11,12]] == t1-t2 // all ok

def r1 = [[a:1, b:1], [a:2,b:2], [a:3,b:3],[a:4,b:4], [a:5,b:5]]
def r2 = [[a:1, b:1],            [a:3,b:3],           [a:5,b:5]]
assert r1[0] == r2[0]
assert r1[2] == r2[1]
assert r1[4] == r2[2]
assert [[a:2,b:2], [a:4,b:4]] == r1-r2 // this is what I expected but fails

assert [] == r1-r2 // this is totally unexpected but it's ok
我不明白为什么。有人能解释一下吗。
谢谢

正如您所说的,它不能满足您的期望,但您忘了告诉我们您的期望(想要做什么)。您是否会收到任何错误以及意外行为?我希望r1-r2将[[a:2,b:2],[a:4,b:4]]适合我,在groovy 2.4.4中使用groovysh。我不能在这里重现任何问题。谢谢。这是真的,它在2.4.4上工作正常。在我测试2.3.8之前。所以我猜早期版本中有一个bug。正如您已经声明的,它不能按您的预期工作,但是您忘记告诉我们您的预期(想要做什么)。您是否会收到任何错误以及意外行为?我希望r1-r2将[[a:2,b:2],[a:4,b:4]]适合我,在groovy 2.4.4中使用groovysh。我不能在这里重现任何问题。谢谢。这是真的,它在2.4.4上工作正常。在我测试2.3.8之前。所以我猜早期版本中有一个bug。