На этом шаге мы рассмотрим интерфейс Set
Set - интерфейс для работы с множествами. В стандартной библиотеке Java есть несколько классов, которые реализуют данный интерфейс:
Приведем ниже пример использования множества.
import java.util.HashSet; import java.util.Set; /** * Класс для демонстрации использования класса Set. * */ public class Main { public static void main(String[] args) { /*Создание двух множеств*/ Set<Integer> first = new HashSet<>(); Set<Integer> second = new HashSet<>(); /*Формирование множеств*/ for (int i = 1; i <= 5; i++) { first.add(i); second.add(2 * i); } /*Вывод содержимого первого множества*/ System.out.print("Первое множество:"); SetUtil.printSet(first); /*Вывод содержимого второго множества*/ System.out.print("Второе множество:"); SetUtil.printSet(second); /*Формирование и вывод объединения множеств*/ System.out.print("\nОбъединение множеств:"); Set<Integer> union = SetUtil.toUniteSets(first, second); SetUtil.printSet(union); /*Формирование и вывод пересечения множеств*/ System.out.print("Пересечение множеств:"); Set<Integer> intersection = SetUtil.intersectionOfSets(first, second); SetUtil.printSet(intersection); /*Формирование и вывод разности множеств*/ System.out.print("Разность множеств:"); Set<Integer> difference = SetUtil.differenceSets(first, second); SetUtil.printSet(difference); /*Формирование и вывод симметрической разности множеств*/ System.out.print("Симметрическая разность множеств:"); Set<Integer> symmDiff = SetUtil.symmetricDifferenceOfSets(first, second); SetUtil.printSet(symmetricDifference); } }
import java.util.HashSet; import java.util.Set; /** * Вспомогательный класс, в котором реализованы следующие операции с множествами: * 1. Вывод элементов множества * 2. Объединение множеств * 3. Пересечение множеств * 4. Разность множеств * 5. Симметрическая разность множеств * */ public class SetUtil { /** * Функция для вывода элементов множества * @param mn множество * */ public static <T> void printSet(Set<T> mn) { for (T v : mn) { System.out.print(" " + v); } System.out.println(); } /** * Функция для нахождения объединения множеств * @param first первое множество * @param second второе множество * @return объединение множеств first и second * */ public static <T> Set<T> toUniteSets(Set<T> first, Set<T> second) { Set<T> union = new HashSet<T>(first); union.addAll(second); return union; } /** * Функция для нахождения пересечения множеств * @param first первое множество * @param second второе множество * @return пересечение множеств first и second * */ public static <T> Set<T> intersectionOfSets(Set<T> first, Set<T> second) { Set<T> intersection = new HashSet<T>(); for (T v : first) { if (second.contains(v)) { intersection.add(v); } } return intersection; } /** * Функция для нахождения разности множеств (first - second). * @param first первое множество * @param second второе множество * @return разность множеств first и second * */ public static <T> Set<T> differenceSets(Set<T> first, Set<T> second) { Set<T> difference = new HashSet<T>(); for (T v : first) { if (!second.contains(v)) { difference.add(v); } } return difference; } /** * Функция для нахождения симметрической разности множеств (first \ second). * @param first первое множество * @param second второе множество * @return симметрическая разность множеств first и second * */ public static <T> Set<T> symmetricDifferenceOfSets(Set<T> first, Set<T> second){ Set<T> differenceOne = differenceSets(first, second); Set<T> differenceTwo = differenceSets(second, first); return toUniteSets(differenceOne, differenceTwo); } }
Проект можно взять здесь
Рис. 1. Вывод программы
На следующем шаге мы рассмотрим интерфейс Map