tutorial traduccion peliculas descargar app groovy

peliculas - groovy traduccion



¿Cómo puedo comparar dos listas en Groovy? (3)

¿Cómo puedo comparar los artículos en dos listas y crear una nueva lista con la diferencia en Groovy?


¿Supongo que el OP está pidiendo la en.wikipedia.org/wiki/Exclusive_or entre dos listas?

( Nota: ¡ Ninguna de las soluciones anteriores maneja duplicados!)

Si quiere codificarlo usted mismo en Groovy, haga lo siguiente:

def a = [''a'',''b'',''c'',''c'',''c''] // diff is [b, c, c] def b = [''a'',''d'',''c''] // diff is [d] // for quick comparison assert (a.sort() == b.sort()) == false // to get the differences, remove the intersection from both a.intersect(b).each{a.remove(it);b.remove(it)} assert a == [''b'',''c'',''c''] assert b == [''d''] assert (a + b) == [''b'',''c'',''c'',''d''] // all diffs

Uno gotcha, está usando listas / matrices de ints. Usted (puede) tener problemas, debido al método polimórfico remove (int) vs remove (Object). Vea aquí para una solución (no probada) .

Sin embargo , en lugar de reinventar la rueda , debes usar una biblioteca existente (por ejemplo commons-collections ):

@Grab(''commons-collections:commons-collections:3.2.1'') import static org.apache.commons.collections.CollectionUtils.* def a = [''a'',''b'',''c'',''c'',''c''] // diff is [b, c, c] def b = [''a'',''d'',''c''] // diff is [d] assert disjunction(a, b) == [''b'', ''c'', ''c'', ''d'']


Las colecciones se cruzan pueden ayudarte con eso, incluso si es un poco complicado revertirlo. Tal vez algo como esto:

def collection1 = ["test", "a"] def collection2 = ["test", "b"] def commons = collection1.intersect(collection2) def difference = collection1.plus(collection2) difference.removeAll(commons) assert ["a", "b"] == difference


Solo usaría los operadores aritméticos, creo que es mucho más obvio lo que está pasando:

def a = ["foo", "bar", "baz", "baz"] def b = ["foo", "qux"] assert ["bar", "baz", "baz", "qux"] == ((a - b) + (b - a))