Comment calculer l'intersection de deux ensembles? [dupliquer]
possibilité de dupliquer:
trouver efficacement l'intersection d'un nombre variable d'ensembles de cordes
Dire deux Hashset, comment calculer l'intersection d'entre eux?
Set<String> s1 = new HashSet<String>();
Set<String> s2 = new HashSet<String>();
S1 INT S2 ?
2 réponses
utiliser la retainAll()
méthode de Set
:
Set<String> s1;
Set<String> s2;
s1.retainAll(s2); // s1 now contains only elements in both sets
si vous voulez préserver les ensembles, créer un nouveau ensemble pour tenir l'intersection:
Set<String> intersection = new HashSet<String>(s1); // use the copy constructor
intersection.retainAll(s2);
le javadoc de retainAll()
dit que c'est exactement ce que vous voulez:
ne Retient que les éléments de cet ensemble qui sont contenus dans la collecte spécifiée (optionnel). En d'autres termes, supprime de l'ensemble de ses éléments qui ne sont pas contenus dans la collection spécifiée. Si la collection spécifiée est aussi un ensemble, cette opération modifie effectivement cet ensemble de sorte que sa valeur est intersection des deux ensembles.
Oui, il y a retainAll
check out ce
Set<Type> intersection = new HashSet<Type>(s1);
intersection.retainAll(s2);