Set<String> s1;
Set<String> s2;
s1.retainAll(s2); // s1 now contains only elements in both sets
Если вы хотите сохранить наборы, создайте новый набор для удерживания пересечения:
Set<String> intersection = new HashSet<String>(s1); // use the copy constructor
intersection.retainAll(s2);
javadocretainAll() говорит именно то, что вы хотите:
Сохраняет только элементы этого набора, которые содержатся в указанной коллекции (дополнительная операция). Другими словами, удаляет из этого множества все его элементы, которые не содержатся в указанной коллекции. Если указанная коллекция также является набором, эта операция эффективно изменяет этот набор так, чтобы его значение было пересечением двух наборов.