Как я могу сравнить два массива, содержащих одинаковые элементы или нет в groovy?

Как я могу сравнить два массива, содержащие одни и те же элементы или нет?

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

A & b содержит те же элементы, но a & c нет.

2 ответов


вы можете попробовать преобразовать их в наборы, а затем сравнить их, так как равенство в наборах определяется как имеющие одни и те же элементы независимо от порядка.

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

просто сортировка результатов и сравнение-простой способ, если ваши списки не слишком велики:

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 перешло к sort предотвратить на месте дозаказа. Если это нормально, чтобы изменить порядок списков, вы можете удалить его и, возможно, получить немного производительности.