Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Класс Java HashSet: полное руководство по операциям, методам и теории множеств

Класс Java HashSet

Изучите класс Java HashSet — его создание, основные методы и практические операции над множествами — через лаконичные примеры.

Класс HashSet, часть Java Collections Framework, реализует интерфейс Set и предлагает хранилище на основе хеш-таблицы.


Создание HashSet

Сначала импортируйте java.util.HashSet:

import java.util.HashSet;

Затем создайте HashSet с конкретной ёмкостью и коэффициентом загрузки:

HashSet<Integer> numbers = new HashSet<>(8, 0.75); // capacity=8, loadFactor=0.75

Параметры:

Использование значений по умолчанию также распространено:

HashSet<Integer> numbers1 = new HashSet<>(); // capacity=16, loadFactor=0.75

Методы HashSet

Ниже приведены наиболее часто используемые методы:


Вставка элементов

Пример с add и addAll:

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> evenNumber = new HashSet<>();
        evenNumber.add(2);
        evenNumber.add(4);
        evenNumber.add(6);
        System.out.println("HashSet: " + evenNumber);
        HashSet<Integer> numbers = new HashSet<>();
        numbers.addAll(evenNumber);
        numbers.add(5);
        System.out.println("New HashSet: " + numbers);
    }
}

Вывод

HashSet: [2, 4, 6] New HashSet: [2, 4, 5, 6]

Доступ к элементам

Итерируйте с Iterator:

import java.util.HashSet;
import java.util.Iterator;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("HashSet: " + numbers);
        Iterator<Integer> iterate = numbers.iterator();
        System.out.print("HashSet using Iterator: ");
        while(iterate.hasNext()) {
            System.out.print(iterate.next() + ", ");
        }
    }
}

Вывод

HashSet: [2, 5, 6] HashSet using Iterator: 2, 5, 6,

Удаление элементов

Одиночное удаление и очистка множества:

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("HashSet: " + numbers);
        boolean removed = numbers.remove(5);
        System.out.println("Is 5 removed? " + removed);
        boolean cleared = numbers.removeAll(numbers);
        System.out.println("Are all elements removed? " + cleared);
    }
}

Вывод

HashSet: [2, 5, 6] Is 5 removed? true Are all elements removed? true

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

Массовые методы HashSet поддерживают классические операции теории множеств.

Объединение (Union)

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> evenNumbers = new HashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(1);
        numbers.add(3);
        numbers.addAll(evenNumbers);
        System.out.println("Union is: " + numbers);
    }
}

Вывод

Union is: [1, 2, 3, 4]

Пересечение (Intersection)

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        HashSet<Integer> evenNumbers = new HashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        evenNumbers.retainAll(primeNumbers);
        System.out.println("Intersection is: " + evenNumbers);
    }
}

Вывод

Intersection is: [2]

Разность (Difference)

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        primeNumbers.add(5);
        HashSet<Integer> oddNumbers = new HashSet<>();
        oddNumbers.add(1);
        oddNumbers.add(3);
        oddNumbers.add(5);
        primeNumbers.removeAll(oddNumbers);
        System.out.println("Difference: " + primeNumbers);
    }
}

Вывод

Difference: [2]

Проверка подмножества (Subset Check)

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        boolean isSubset = numbers.containsAll(primeNumbers);
        System.out.println("Is primeNumbers a subset of numbers? " + isSubset);
    }
}

Вывод

Is primeNumbers a subset of numbers? true

Дополнительные методы

МетодОписание
clone()Создаёт поверхностную копию множества.
contains()Проверяет существование элемента.
isEmpty()Возвращает true, если множество пусто.
size()Количество элементов в множестве.
clear()Удаляет все элементы.

Для полного списка обратитесь к официальной документации Java.


Зачем использовать HashSet?

Когда требуется произвольный доступ, HashSet предлагает производительность O(1) благодаря своей хеш-таблице. hashCode() каждого элемента гарантирует уникальность, предотвращая дубликаты. Однако HashSet не потокобезопасен; внешняя синхронизация необходима для параллельного использования.

Примечание: Поскольку HashSet несинхронизирован, одновременная модификация несколькими потоками может повредить структуру данных.

java

  1. Ключевое слово final в Java: переменные, методы и классы
  2. Оператор instanceof в Java: полное руководство с примерами
  3. Статические вложенные классы в Java: использование, отличия и примеры
  4. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  5. Паттерн Singleton в Java: как реализовать и безопасно использовать
  6. Рефлексия в Java: инспекция классов, методов и полей во время выполнения
  7. Освоение алгоритмов Java Collections: сортировка, перемешивание и многое другое
  8. Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
  9. Освоение Java Generics: создание переиспользуемого, типобезопасного кода
  10. Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление