Duplicate possible:
Recherche efficace de l'intersection d'un nombre variable de jeux de chaînes
Dis, as deux Hashset, comment calculer leur intersection?
Set<String> s1 = new HashSet<String>();
Set<String> s2 = new HashSet<String>();
S1 INT S2 ?
Utilisez la méthode retainAll()
de Set
:
Set<String> s1;
Set<String> s2;
s1.retainAll(s2); // s1 now contains only elements in both sets
Si vous souhaitez conserver les jeux, créez un jeu new pour contenir l'intersection:
Set<String> intersection = new HashSet<String>(s1); // use the copy constructor
intersection.retainAll(s2);
Le javadoc de retainAll()
indique que c'est exactement ce que vous voulez:
Conserve uniquement les éléments de cet ensemble contenus dans la collection spécifiée (opération facultative). En d'autres termes, supprime de cet ensemble tous les éléments qui ne sont pas contenus dans la collection spécifiée. Si la collection spécifiée est également un ensemble, cette opération modifie effectivement cet ensemble afin que sa valeur soit l'intersection des deux ensembles.
Oui, il y a retainAll
check out this
Set<Type> intersection = new HashSet<Type>(s1);
intersection.retainAll(s2);