Ako môžem porovnať, či dve polia obsahujú rovnaké položky alebo nie?
def a = [1, 3, 2]
def b = [2, 1, 3]
def c = [2, 4, 3, 1]
a & b sú rovnaké položky, ale a & c nie.
odpovede:
13 pre odpoveď č. 1Môžete ich skúsiť previesť na množiny a potom ich porovnať, pretože rovnosť v množinách je definovaná ako rovnaká s rovnakými prvkami bez ohľadu na poradie.
assert a as Set == b as Set
assert a as Set != c as Set
8 pre odpoveď č. 2
Jednoduché zoradenie výsledkov a porovnanie je jednoduchý spôsob, ak vaše zoznamy nie sú príliš veľké:
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
Na false
prešiel na sort
je zabrániť preusporiadaniu na mieste. Ak je v poriadku meniť poradie zoznamov, môžete ich odstrániť a prípadne získať trochu výkonu.