Пересечение двух множеств в Java — метод Set.retainAll
Пример 1: Вычисление пересечения двух множеств
import java.util.HashSet;
import java.util.Set;
class Main {
public static void main(String[] args) {
// create first set
Set<Integer> primeNumbers = new HashSet<>();
primeNumbers.add(2);
primeNumbers.add(3);
System.out.println("Prime Numbers: " + primeNumbers);
// create second set
Set<Integer> evenNumbers = new HashSet<>();
evenNumbers.add(2);
evenNumbers.add(4);
System.out.println("Even Numbers: " + evenNumbers);
// Intersection of two sets
evenNumbers.retainAll(primeNumbers);
System.out.println("Intersection: " + evenNumbers);
}
}
Вывод:
Prime Numbers: [2, 3]
Even Numbers: [2, 4]
Intersection: [2]
В приведённом примере мы создали два множества primeNumbers и evenNumbers, реализованных с помощью HashSet. Обратите внимание на строку:
evenNumbers.retainAll(primeNumbers);
Здесь мы использовали метод retainAll() для получения пересечения двух множеств.
Пример 2: Получение пересечения двух множеств с помощью библиотеки Guava
import java.util.HashSet;
import java.util.Set;
import com.google.common.collect.Sets;
class Main {
public static void main(String[] args) {
// create the first set
Set<String> backend = new HashSet<>();
backend.add("Java");
backend.add("JavaScript");
System.out.println("Backend Languages: " + backend);
// create second set
Set<String> frontend = new HashSet<>();
frontend.add("JavaScript");
frontend.add("CSS");
System.out.println("Frontend Languages: " + frontend);
Set<String> intersect = Sets.intersection(backend, frontend);
System.out.println("Common Languages: " + intersect);
}
}
Вывод:
Backend Languages: [Java, JavaScript]
Frontend Languages: [JavaScript, CSS]
Common Languages: [JavaScript]
В приведённом примере мы использовали библиотеку Guava для получения пересечения двух множеств. Чтобы запустить программу, нужно добавить Guava в зависимости проекта.
Здесь использован метод intersection() класса Sets из библиотеки Guava.