nik*_*kli 7 arrays groovy compare
如何比较两个包含相同项目的数组?
def a = [1, 3, 2]
def b = [2, 1, 3]
def c = [2, 4, 3, 1]
Run Code Online (Sandbox Code Playgroud)
a&b包含相同的项目,但a&c不包含.
epi*_*ian 17
您可以尝试将它们转换为集合然后比较它们,因为集合中的相等性被定义为具有相同的元素而不管顺序如何.
assert a as Set == b as Set
assert a as Set != c as Set
Run Code Online (Sandbox Code Playgroud)
如果您的列表不是太大,那么简单地对结果进行排序和比较是一种简单的方法:
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
Run Code Online (Sandbox Code Playgroud)
该false传给sort是防止就地重新排序.如果可以更改列表的顺序,则可以删除它并可能获得一点性能.