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