English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве мы будем изучать интерфейс Set и его методы в Java.
Интерфейс Set в фреймворке Java Collections предоставляет функции математических множеств в Java. Он наследует интерфейс Collection.
В отличие от интерфейса List, множество Set не может содержать повторяющиеся элементы.
Поскольку Set является интерфейсом, из него нельзя создать объект.
Чтобы использовать функции интерфейса Set, мы можем использовать следующие классы:
Эти классы определены и реализованы в фреймворке Collections и реализуют интерфейс Set.
Этот интерфейс Set также расширяет эти подинтерфейсы:
В Java необходимо импортировать пакет java.util.Set, чтобы использовать Set.
// Реализация Set с помощью HashSet Set<String> animals = new HashSet<>();
Здесь мы создали множество, называемое animals. Мы использовали класс HashSet для реализации интерфейса Set.
Интерфейс Set включает все методы интерфейса Collection. Это потому, что Collection является супέρ-интерфейсом Set.
Интерфейс Set также предоставляет некоторые часто используемые методы интерфейса Collection:
add() - Добавляет указанный элемент в множество
addAll() - Добавляет все элементы заданного множества в множество
iterator() - Возвращает итератор, который можно использовать для последовательного доступа к элементам множества
remove() - Удаляет указанный элемент из множества
removeAll() - Удаляет все элементы, которые существуют в заданном множестве
keepAll() - Сохраняет все элементы, которые еще существуют в заданном множестве
clear() - Удаляет все элементы из множества
size() - Возвращает длину множества (число элементов)
toArray() - Возвращает массив, содержащий все элементы множества
contains() - Возвращает true, если множество содержит указанный элемент
containsAll() - Возвращает true, если множество содержит все элементы заданного множества
hashCode() - Возвращает значение хэш-кода (адрес элемента в множестве)
Интерфейс Java Set позволяет выполнять основные операции над математическими множествами, такие как объединение, пересечение и подмножество.
Объединение - Чтобы получить объединение двух наборов x и y, мы можем использовать x.addAll(y)
Пересечение - Чтобы получить交集 двух наборов x и y, мы можем использовать x.retainAll(y)
Подмножество - Чтобы проверить, является ли x подмножеством y, мы можем использовать y.containsAll(x)
1. Реализация класса HashSet
import java.util.Set; import java.util.HashSet; class Main { public static void main(String[] args) { //Создание набора с помощью класса HashSet Set<Integer> set1 = new HashSet<>(); //Добавление элементов в set1 set1.add(2); set1.add(3); System.out.println("Set1: " + set1); //Создание другого набора с помощью класса HashSet Set<Integer> set2 = new HashSet<>(); //Добавление элементов set2.add(1); set2.add(2); System.out.println("Set2: " + set2); //Объединение двух наборов set2.addAll(set1); System.out.println("Объединение наборов: " + set2); } }
Результат вывода
Set1: [2, 3] Set2: [1, 2] Объединение наборов: [1, 2, 3]
Чтобы узнать больше о HashSet, пожалуйста, посетитеJava HashSet.
2. Реализация класса TreeSet
import java.util.Set; import java.util.TreeSet; import java.util.Iterator; class Main { public static void main(String[] args) { //Создание набора с помощью класса TreeSet Set<Integer> numbers = new TreeSet<>(); //Добавление элементов в набор set numbers.add(2); numbers.add(3); numbers.add(1); System.out.println("TreeSet: " + numbers); //Использование iterator() для доступа к элементам System.out.print("Использование iterator() для доступа к элементам:"); Iterator<Integer> iterate = numbers.iterator(); while(iterate.hasNext()) { System.out.print(iterate.next()); System.out.print(", "); } } }
Результат вывода
TreeSet: [1, 2, 3] Доступ к элементам с помощью iterator(): 1, 2, 3,
Чтобы узнать больше о TreeSet, пожалуйста, посетитеJava TreeSet.
Теперь我们知道Set что это, в следующем руководстве мы увидим его реализацию в классах EnumSet, HashSet, LinkedHashSet и TreeSet.