Принятый ответ просто отлично; как обновление: начиная с Java 8 есть немного более эффективный способ найти пересечение двух Set
s.
Set<String> intersection = set1.stream()
.filter(set2::contains)
.collect(Collectors.toSet());
Причина, по которой он немного более эффективен, заключается в том, что первоначальный подход должен был добавлять элементы set1
, а затем он должен был быть снова удален, если их не было в set2
. Этот подход только добавляет к результирующему набору то, что должно быть там.
Строго говоря, вы могли бы сделать это и до Java 8, но без Stream
s код был бы немного более трудоемким.
Если оба набора значительно различаются по размеру, вы предпочли бы потоковую передачу меньшему.