Wie kann ich die Elemente in zwei Listen vergleichen und eine neue Liste mit dem Unterschied in Groovy erstellen?Wie kann ich zwei Listen in Groovy vergleichen
Antwort
Sammlungen Schnittpunkt könnte Ihnen dabei helfen, auch wenn es ein wenig schwierig ist, es umzukehren. Vielleicht so etwas wie:
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
Ich würde nur die arithmetischen Operatoren verwenden, halte ich es für viel mehr offensichtlich ist, was los ist:
def a = ["foo", "bar", "baz", "baz"]
def b = ["foo", "qux"]
assert ["bar", "baz", "baz", "qux"] == ((a - b) + (b - a))
Ich gehe davon aus dem OP für die exclusive disjunction zwischen zwei Listen bittet ?
(Hinweis: Keines der bisherigen Lösungen behandeln Duplikate!)
Wenn Sie es selbst in Groovy codieren wollen, gehen Sie wie folgt vor:/
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
Eine gotcha, wird mit Listen Arrays von Ints. Sie haben (möglicherweise) Probleme wegen der polymorphen Methode remove (int) vs remove (Object). See here for a (untested) solution.
Anstatt das Rad neu zu erfinden, aber, sollten Sie nur eine vorhandene Bibliothek (z commons-collections
) verwenden:
@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']
- 1. Groovy zwei Listen zusammenführen?
- 2. Wie kann ich zwei geordnete Listen in Python vergleichen?
- 3. Wie zwei Listen in Haskell zu vergleichen?
- 4. Vergleichen Sie zwei verschiedene Listen
- 5. Vergleichen von zwei Listen in Python
- 6. Vergleichen von zwei Listen in linq
- 7. Abfrage vergleichen zwei Listen in CQL (Cypher)
- 8. Wie kann ich zwei Regale in TFS einfach vergleichen/vergleichen?
- 9. Elemente aus zwei Listen in Python vergleichen
- 10. Wie kann ich zwei Arrays vergleichen?
- 11. Wie kann ich zwei Textdateien vergleichen?
- 12. Vergleichen zwei geordnete Listen für Ähnlichkeit
- 13. Wie kann ich zwei Git-Repositories vergleichen?
- 14. Vergleichen Sie zwei Listen von Farben
- 15. Wie kann ich zwei Lambda-Ausdrücke vergleichen?
- 16. Wie kann ich zwei Tabellendaten vergleichen?
- 17. Wie kann ich zwei AssemblyName-Instanzen vergleichen?
- 18. Wie kann ich zwei gemischte Strings vergleichen?
- 19. Wie kann ich zwei String-Variablen vergleichen?
- 20. vergleichen den Inhalt von zwei Listen
- 21. Vergleichen Sie zwei Listen von Listen von String
- 22. Wie kann ich zwei Listen in Python vergleichen und Ergebnisse zurückgeben
- 23. LINQ zwei Listen vergleichen und entfernen
- 24. Vergleichen Sie zwei Listen mit Ausnahme Methode
- 25. Wie kann ich zwei Revisionen in Git in Eclipse vergleichen?
- 26. Wie kann ich zwei Listen vergleichen und die Unterschiede zwischen ihnen finden?
- 27. Vergleichen von Listen in Python
- 28. JAVERS Listen vergleichen
- 29. Wie kann ich zwei Strings in einer HashMap erfolgreich vergleichen?
- 30. Wie kann ich zwei awk Ergebniswert in bash vergleichen
Sie müssen sagen, was Sie mit „Differenz“ bedeuten. Ist die Reihenfolge wichtig? Sind mehrere Kopien wichtig? – John
Meinst du die exklusive Trennung zwischen zwei Listen? d.h. https://en.wikipedia.org/wiki/Exclusive_or –