/ / Ako môžem porovnať dve polia obsahujúce rovnaké položky alebo nie? - polia, groovy, porovnajte

Ako môžem porovnať dve polia obsahujúce rovnaké položky alebo nie v groovy? - matice, groovy, porovnať

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ď č. 1

Môž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.