9 Stimmen

Differenz zwischen 2 Sammlungen? (Elemente in Sammlung 1, aber nicht in Sammlung 2)

In Java (vielleicht mit Guava?), gibt es eine Methode, um den Unterschied zwischen zwei Collections zu erhalten, z.B. eine List und ein Set ohne eine der beiden Collections zu ändern (sonst würde es collection1.removeAll(collection2) sein)?

In Guava gibt es Sets.difference(set1, set2), aber es funktioniert nur für Sets, nicht für beliebige Collections.

Vielen Dank für jeden Hinweis!

13voto

Frank Pavageau Punkte 11307

Sie können die erste Collection mit den integrierten Predicaten filtern:

Collections2.filter(c1, Predicates.not(Predicates.in(c2))

Es funktioniert mit jeder Art von Collectionn, aber natürlich ist es besser, wenn c2 ein Set ist.

4voto

Mike Punkte 2359

ApacheCommons CollectionUtils hat eine Methode namens disjunktion welche

Gibt eine Collection zurück, die die exklusive Disjunktion (symmetrische Differenz) der gegebenen Iterables enthält

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X