English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Java

Java управление потоком

Java массив

Java Оориентированность на объекты (I)

Java Оориентированность на объекты (II)

Java Оориентированность на объекты (III)

Обработка исключений Java

Java список (List)

Java Queue (очередь)

Java Map коллекция

Java Set коллекция

Java Ввод-вывод (I/O)

Java Reader/Writer

Другие темы Java

Java Set интерфейс

В этом руководстве мы будем изучать интерфейс Set и его методы в Java.

Интерфейс Set в фреймворке Java Collections предоставляет функции математических множеств в Java. Он наследует интерфейс Collection.

В отличие от интерфейса List, множество Set не может содержать повторяющиеся элементы.

Классы, реализующие Set

Поскольку Set является интерфейсом, из него нельзя создать объект.

Чтобы использовать функции интерфейса Set, мы можем использовать следующие классы:

Эти классы определены и реализованы в фреймворке Collections и реализуют интерфейс Set.

Интерфейсы, наследующие Set

Этот интерфейс Set также расширяет эти подинтерфейсы:

Как использовать Set?

В Java необходимо импортировать пакет java.util.Set, чтобы использовать Set.

// Реализация Set с помощью HashSet
Set<String> animals = new HashSet<>();

Здесь мы создали множество, называемое animals. Мы использовали класс HashSet для реализации интерфейса Set.

Методы Set

Интерфейс Set включает все методы интерфейса Collection. Это потому, что Collection является супέρ-интерфейсом Set.

Интерфейс Set также предоставляет некоторые часто используемые методы интерфейса Collection:

  • add() - Добавляет указанный элемент в множество

  • addAll() - Добавляет все элементы заданного множества в множество

  • iterator() - Возвращает итератор, который можно использовать для последовательного доступа к элементам множества

  • remove() - Удаляет указанный элемент из множества

  • removeAll() - Удаляет все элементы, которые существуют в заданном множестве

  • keepAll()  - Сохраняет все элементы, которые еще существуют в заданном множестве

  • clear() - Удаляет все элементы из множества

  • size() - Возвращает длину множества (число элементов)

  • toArray() - Возвращает массив, содержащий все элементы множества

  • contains() - Возвращает true, если множество содержит указанный элемент

  • containsAll() - Возвращает true, если множество содержит все элементы заданного множества

  • hashCode() - Возвращает значение хэш-кода (адрес элемента в множестве)

Операции над множествами Set

Интерфейс Java Set позволяет выполнять основные операции над математическими множествами, такие как объединение, пересечение и подмножество.

  • Объединение - Чтобы получить объединение двух наборов x и y, мы можем использовать x.addAll(y)

  • Пересечение - Чтобы получить交集 двух наборов x и y, мы можем использовать x.retainAll(y)

  • Подмножество - Чтобы проверить, является ли x подмножеством y, мы можем использовать y.containsAll(x)

Реализация интерфейса Set

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.