dir.by  
Поиск >>

Компьютер, программы
→
Java
→
Java (class, interface, collections, и т.д.)
 class HashSet в Java 
посмотрели 1219 раз
обновлено: 9 октября 2026
HashSet содержит неповторяющиеся коллекцию элементов.
HashSet содержит элементы без сортировки.
HashSet позволяет быстро определить, есть такой элемент или нет (быстро потому что, использует индекс, который вычисляется из хэш-кода элемента).
HashSet имеет методы Add, Remove, Contains и использует хэш-реализацию, поэтому эти методы занимают 1 действие (методы Contains и Remove в ArrayList занимают n действий.)

HashSet не синхронизирован. Если несколько потоков одновременно обращаются к хеш-набору, и хотя бы один из потоков изменяет HashSet, он должен быть синхронизирован внешне.

HashSet
  реализует   interface Set<E>      это коллекция уникальных элементов
  Java  
interface Set<E> extends Collection<E>
{
Смотрим функции >> ...
}
Пример
  Java     Создаем новое Java консольное приложение ... и напишем код
package org.example;
import java.util.Stack;

public class Program {
     public static void main(String[] args)
     {
          HashSet<String> myHashSet1 = new HashSet<String>();

          // добавляем элементы
          myHashSet1.add("Car");
          myHashSet1.add("House");
          myHashSet1.add("Book");

          // проверить есть элемент в коллекции
          Boolean hasElement = myHashSet1.contains("House");
          // hasElement = true

          // пройти по всем элементам
          for(String str:myHashSet1)
          {
               System.out.println(str);
          }
          // element1 = Car
          // element2 = Book
          // element3 = House

          // удаляем элемент "Book"
          myHashSet1.remove("Book");
          // element1 = Car
          // element3 = House

     }
}
Как устроен HashSet
class HashSet<E> внутри содержит HashMap:
  Java  
class HashSet<E>
{
     HashMap<E,Object> map;

     ...
     // во всех public конструкторах создается HashMap
     public HashSet(...) {
          map = new HashMap<>(...);
     }

}


Документация
  Java  
class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable
{
     HashMap<E,Object> map;

     public HashSet() {
          map = new HashMap<>();
     }

     public HashSet(Collection<? extends E> c) {
          map = HashMap.newHashMap(Math.max(c.size(), 12));
          addAll(c);
     }

     public HashSet(int initialCapacity, float loadFactor) {
          map = new HashMap<>(initialCapacity, loadFactor);
     }

     public HashSet(int initialCapacity) {
          map = new HashMap<>(initialCapacity);
     }

     private HashSet(int initialCapacity, float loadFactor, boolean dummy) {
          map = new LinkedHashMap<>(initialCapacity, loadFactor);
     }

     public Iterator<E> iterator() {
          return map.keySet().iterator();
     }

     public int size() {
          return map.size();
     }

     public boolean isEmpty() {
          return map.isEmpty();
     }

     public boolean contains(Object o) {
          return map.containsKey(o);
     }

     public boolean add(E e) {
          return map.put(e, PRESENT)==null;
     }

     public boolean remove(Object o) {
          return map.remove(o)==PRESENT;
     }

     public void clear() {
          map.clear();
     }

     public Object clone() {
          try {
               HashSet<E> newSet = (HashSet<E>) super.clone();
               newSet.map = (HashMap<E, Object>) map.clone();
               return newSet;
          } catch (CloneNotSupportedException e) {
               throw new InternalError(e);
          }
     }

     @java.io.Serial
     private void writeObject(java.io.ObjectOutputStream s)
               throws java.io.IOException {
               ...
     }

     @java.io.Serial
     private void readObject(java.io.ObjectInputStream s)
               throws java.io.IOException, ClassNotFoundException {
               ...
     }

     public Spliterator<E> spliterator() {
          return new HashMap.KeySpliterator<>(map, 0, -1, 0, 0);
     }

     @Override
     public Object[] toArray() {
          return map.keysToArray(new Object[map.size()]);
     }

     @Override
     public <T> T[] toArray(T[] a) {
          return map.keysToArray(map.prepareArray(a));
     }

     public static <T> HashSet<T> newHashSet(int numElements) {
          if (numElements < 0) {
               throw new IllegalArgumentException("Negative number of elements: " + numElements);
          }
          return new HashSet<>(HashMap.calculateHashMapCapacity(numElements));
     }

}
Подробнее о методах в Java документации: https://docs.oracle.com ...
 
← Предыдущая тема
interface Set в Java
 
Следующая тема →
class LinkedHashSet<E> в Java
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

 
Скачать и установить
• Установка JDK (скачиваем и устанавливаем библиотеку Java для Windows)
• Скачать и установить IntelliJ IDEA для изучения Java, Spring, Jakarta EE | Функциональность и отличия: Community | Ultimate
• Error "JDK is missing" | Java
Java (class, interface, collections, и т.д.)
• Создание простого консольного приложения в IntelliJ IDEA для изучения Java
• Модификаторы доступа (private, protected, public) для класса и для методов, полей. | Java
• Коллекции в Java
• interface List<E> в Java
• class ArrayList<E> в Java
• class Vector<E> в Java
• class Stack<E> в Java
• class CopyOnWriteArrayList<E> в Java
• interface Queue<E> в Java
• interface Deque<E> в Java
• class LinkedList<E> в Java
• interface Set в Java
• class HashSet<E> в Java
• class LinkedHashSet<E> в Java
• Collections.singletonList("Hello") возвращает неизменяемый список, содержащий ровно один указанный элемент | Java collection
• class Collections (все функции, алгоритмы) | Java
• stream.filter(...) выбираем элементы по своему критерию | Java collection | Пример: allCars.stream().filter(item -> item.Price < 30000).toList()
• Что такое interface в Java ?
• Прямо в коде (во время выполнения) делаем имплементацию для interface | Java
• Потоки в Java
• lambda это безымянный метод (нет имени и не принадлежит классу) | Java
• Исключения и обработка в Java. Пример: try {...} catch (Exception e) {...}
• Зачем использовать throws Exception в названии функциии в Java ? Ответ: метод создает исключение и нет обработки try catch. Пример: float CalculateDensity(float mass, float volume) throws Exception { ... throw new Exception("Error! Volume is zero."); ... }
Java web приложение (сервлет, jsp страница, основная функциональность и без фрэймворков)
• Создаем новое простое web приложение (jsp web страница) | Java, Maven
• Создаем web сервлет (сервлет находится на веб-сервере, по запросу возвращает результат) | Java
• Установка Tomcat web server (скачиваем и устанавливаем для Windows)
• Проверяем, тестируем Tomcat web server (создаем новый my.hml файл)
• Что такое Maven
• Что такое динамическая web страница jsp (Java Server Page) ?
• Как инсталировать Smart Tomcat plugin в Intellij Idea
• Ошибка "The SDK is not specified for module ... | Project SDK is not defined ..." в IntelliJ IDEA | Java
Spring в Java (Spring Framework, Spring Data, Spring Boot, ...)
• Что такое Spring? Зачем в Java использовать Spring?
• Что такое Spring Bean? Что такое Spring Container? IoC (inversion of control) | Создание простого Spring проекта и конфигурациия Spring Container в XML файле | Редактор IntelliJ Idea и язык Java
• Что такое Dependency Injection в Spring? Создание простого Spring проекта с Dependency Injection в конструкторе с атрибутами @Component, @Autowired | Редактор IntelliJ Idea и язык Java
• Создаем новое Spring Web приложение (запрос идет в Controller → Controller создает ответ как текст или json) | Java, Spring Web, Spring Boot, Maven
• Создаем новое Spring WebSocket приложение (Java WebSocket шлет сообщение к JavaScript WebSocket) | Java, Spring WebSocket, Spring Boot, Maven
• Создаем Azure Web App с типом Java (бесплатно). То есть создаем пустой web server
• Java Spring web приложение кладем в Azure
• К приложению Azure Web App (Java) соединяемся через FTP | используем File Explorer
• Ошибка "The SDK is not specified for module ... | Project SDK is not defined ..." в IntelliJ IDEA | Java, Spring Boot
• Как инсталировать Spring WebSocket plugin в Intellij Idea
Jakarta EE / Java EE в Java (web приложения, web сервисы)
• Что такое Jakarta EE (Java EE) ? | В каком редакторе (программе) удобно писать Jakarta EE (Java EE) код?
• Создание простого web-проекта в IntelliJ Idea Ultimate | Jakarta EE (Java EE)
Struts на Java (расширяет API Java Servlet используя MVC)
• Что такое Struts | Java
Курсы, обучение
• Курс "Java-разработчик" от Yandex
Собеседование
• Собеседования на Java

  Ваши вопросы присылайте по почте: info@dir.by