如何比较两个包含相同项目的数组?
def a = [1, 3, 2]
def b = [2, 1, 3]
def c = [2, 4, 3, 1]
a& b包含相同的项目,但是& c不是。
答案 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}}是为了防止就地重新排序。如果可以更改列表的顺序,则可以删除它并可能获得一点性能。