如何在groovy中比较两个包含相同项目的数组?

时间:2011-12-01 06:55:48

标签: arrays groovy compare

如何比较两个包含相同项目的数组?

def a = [1, 3, 2]
def b = [2, 1, 3]
def c = [2, 4, 3, 1]

a& b包含相同的项目,但是& c不是。

2 个答案:

答案 0 :(得分:15)

您可以尝试将它们转换为集合然后比较它们,因为集合中的相等性被定义为具有相同的元素而不管顺序。

assert a as Set == b as Set
assert a as Set != c as Set

答案 1 :(得分:8)

如果您的列表不是太大,只需对结果进行排序和比较是一种简单的方法:

def a = [1, 3, 2]
def b = [2, 1, 3]
def c = [2, 4, 3, 1]

def haveSameContent(a1, a2) {
    a1.sort(false) == a2.sort(false)
}

assert haveSameContent(a, b) == true
assert haveSameContent(a, c) == false

传递给false的{​​{1}}是为了防止就地重新排序。如果可以更改列表的顺序,则可以删除它并可能获得一点性能。