Quelle est la meilleure façon d'obtenir le symétrique de la différence entre deux ensembles en java?

Je me demandais si il existe un moyen rapide/moyen propre pour obtenir le symétrique de la différence entre deux ensembles ?

J'ai:

Set<String> s1 = new HashSet<String>();
s1.add("a");
s1.add("b");
s1.add("c");

Set<String> s2 = new HashSet<String>();
s2.add("b");

J'ai besoin de quelque chose comme:

Set<String> diff = Something.diff(s1, s2);
//diff would contain ["a", "c"]

Juste pour préciser j'ai besoin de la symétrique différence.

  • Quick&facile: Vous pourriez écrire Set<String> diff = new HashSet<String>(s1); diff.removeAll(s2);
  • ce sera un échec pour S1={"a","b","c"},S2={"b","d"}. résultat devrait être {"a","c","d"}
  • Si par "différence" (cf. secure.wikimedia.org/wikipedia/en/wiki/...) les OP signifiait symétrique différence, alors vous avez raison. Cependant, vous pouvez obtenir ce que (A - B) + (B - A), ou (A + B) - (Un bouchon B). Je ne connais pas de moyen plus rapide en java pour le mettre en œuvre.
  • Java 8 et Java 11 : stackoverflow.com/a/52268640/1216775
InformationsquelleAutor Simeon | 2011-11-09