Posible duplicado:
Encontrar eficientemente la intersección de un número variable de conjuntos de cadenas
Digamos, tiene dos Hashset, ¿cómo calcular la intersección de ellos?
Set<String> s1 = new HashSet<String>(); Set<String> s2 = new HashSet<String>(); S1 INT S2 ?Use el método de retainAll() de Set :
Set<String> s1; Set<String> s2; s1.retainAll(s2); // s1 now contains only elements in both setsSi desea conservar los conjuntos, cree un nuevo conjunto para contener la intersección:
Set<String> intersection = new HashSet<String>(s1); // use the copy constructor intersection.retainAll(s2); El javadoc de retainAll() dice que es exactamente lo que quieres:
Conserva solo los elementos de este conjunto que están contenidos en la colección especificada (operación opcional). En otras palabras, elimina de este conjunto todos sus elementos que no están contenidos en la colección especificada. Si la colección especificada también es un conjunto, esta operación modifica efectivamente este conjunto para que su valor sea la intersección de los dos conjuntos.