Spec-Zone.ru › OpenJDK 17

Класс HashSet<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractSet<E>
java.util.HashSet<E>
Параметры типа:
E - тип элементов, хранимых в этом множестве
Все реализуемые интерфейсы:
Serializable, Cloneable, Iterable<E>, Collection<E>, Set<E>
Прямые известные подклассы:
JobStateReasons, LinkedHashSet
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable
Этот класс реализует интерфейс Set, основанный на хеш-таблице (фактически, экземпляре HashMap). Он не гарантирует порядок итерации множества; в частности, он не гарантирует, что порядок останется постоянным со временем. Этот класс допускает null элемент.

Этот класс обеспечивает постоянное время выполнения основных операций (add, remove, contains и size), предполагая, что хеш-функция правильно распределяет элементы по корзинам. Итерация по этому множеству занимает время, пропорциональное сумме размера экземпляра HashSet (количество элементов) и «емкости» базового экземпляра HashMap (количество корзин). Поэтому очень важно не устанавливать слишком большую начальную емкость (или слишком низкий коэффициент заполнения), если важна производительность итераций.

Обратите внимание, что эта реализация не синхронизирована. Если несколько потоков одновременно обращаются к множеству хеш, и по крайней мере один из потоков изменяет множество, его необходимо синхронизировать внешним образом. Обычно это достигается синхронизацией на некотором объекте, естественным образом инкапсулирующем множество. Если такой объект не существует, множество следует «оборачивать» с помощью метода Collections.synchronizedSet. Лучше всего это сделать при создании, чтобы предотвратить случайный несинхронизированный доступ к множеству:

   Set s = Collections.synchronizedSet(new HashSet(...));

Итераторы, возвращаемые методом iterator этого класса, являются быстродействующими: если множество модифицируется в любой момент после создания итератора, любым способом, кроме метода самого итератора remove, итератор выбрасывает исключение ConcurrentModificationException. Таким образом, в случае одновременного изменения итератор быстро и четко завершается, а не рискует произвольным, непредсказуемым поведением в неопределенное время в будущем.

Обратите внимание, что гарантировать быстрое поведение итератора невозможно, так как, как правило, невозможно дать какие-либо гарантии в присутствии одновременного несинхронизированного изменения. Быстродействующие итераторы выбрасывают ConcurrentModificationException в порядке наилучшего соответствия. Поэтому неправильно создавать программу, зависящую от этого исключения для правильности: быстрое поведение итераторов следует использовать только для обнаружения ошибок.

Этот класс является частью Java Collections Framework.

С момента:
1.2
См. также:
  • Collection
  • Set
  • TreeSet
  • HashMap
  • Сериализованная форма

Краткое описание конструкторов

Конструктор Описание
HashSet()
Создает новое пустое множество; базовый экземпляр HashMap имеет стандартную начальную емкость (16) и коэффициент заполнения (0,75).
HashSet(int initialCapacity)
Создает новое пустое множество; базовый экземпляр HashMap имеет указанную начальную емкость и стандартный коэффициент заполнения (0,75).
HashSet(int initialCapacity, float loadFactor)
Создает новое пустое множество; базовый экземпляр HashMap имеет указанную начальную емкость и указанный коэффициент заполнения.
HashSet(Collection<? extends E> c)
Создает новое множество, содержащее элементы в указанной коллекции.

Краткое описание методов

Модификатор и тип Метод Описание
boolean add(E e)
Добавляет указанный элемент в это множество, если он еще не присутствует.
void clear()
Удаляет все элементы из этого множества.
Object clone()
Возвращает поверхностную копию этого экземпляра HashSet; сами элементы не клонируются.
boolean contains(Object o)
Возвращает true, если это множество содержит указанный элемент.
boolean isEmpty()
Возвращает true, если это множество не содержит элементов.
Iterator<E> iterator()
Возвращает итератор по элементам в этом множестве.
boolean remove(Object o)
Удаляет указанный элемент из этого множества, если он присутствует.
int size()
Возвращает количество элементов в этом множестве (его мощность).
Spliterator<E> spliterator()
Создает отложенную привязку и быстродействующий Spliterator по элементам в этом множестве.
Object[] toArray()
Возвращает массив, содержащий все элементы в этой коллекции.
<T> T[] toArray(T[] a)
Возвращает массив, содержащий все элементы в этой коллекции; тип возвращаемого массива соответствует типу указанного массива.

Методы, объявленные в классе java.util.AbstractSet

equals, hashCode, removeAll

Методы, объявленные в классе java.util.AbstractCollection

addAll, containsAll, retainAll, toArray, toArray, toString

Методы, объявленные в классе java.lang.Object

finalize, getClass, notify, notifyAll, wait, wait, wait

Методы, объявленные в интерфейсе java.util.Collection

parallelStream, removeIf, stream, toArray

Методы, объявленные в интерфейсе java.lang.Iterable

forEach

Методы, объявленные в интерфейсе java.util.Set

addAll, containsAll, equals, hashCode, removeAll, retainAll

Подробное описание конструкторов

HashSet

public HashSet()
Создаёт новый пустой набор; поддерживающая HashMap структура имеет значения по умолчанию для начальной ёмкости (16) и коэффициента заполнения (0.75).

HashSet

public HashSet(Collection<? extends E> c)
Создаёт новый набор, содержащий элементы в указанном наборе. HashMap создаётся с коэффициентом заполнения по умолчанию (0.75) и начальной ёмкостью, достаточной для размещения элементов в указанном наборе.
Параметры:
c - набор, элементы которого должны быть помещены в этот набор
Исключения:
NullPointerException - если указанный набор равен null

HashSet

public HashSet(int initialCapacity, float loadFactor)
Создаёт новый пустой набор; поддерживающая HashMap структура имеет указанную начальную ёмкость и указанный коэффициент заполнения.
Параметры:
initialCapacity - начальная ёмкость хэш-таблицы
loadFactor - коэффициент заполнения хэш-таблицы
Исключения:
IllegalArgumentException - если начальная ёмкость меньше нуля или коэффициент заполнения не положительный

HashSet

public HashSet(int initialCapacity)
Создаёт новый пустой набор; поддерживающая HashMap структура имеет указанную начальную ёмкость и коэффициент заполнения по умолчанию (0.75).
Параметры:
initialCapacity - начальная ёмкость хэш-таблицы
Исключения:
IllegalArgumentException - если начальная ёмкость меньше нуля

Подробное описание методов

iterator

public Iterator<E> iterator()
Возвращает итератор по элементам в этом наборе. Элементы возвращаются в произвольном порядке.
Задано в:
iterator в интерфейсе Collection<E>
Задано в:
iterator в интерфейсе Iterable<E>
Задано в:
iterator в интерфейсе Set<E>
Задано в:
iterator в классе AbstractCollection<E>
Возвращает:
итератор по элементам в этом наборе
См. также:
  • ConcurrentModificationException

size

public int size()
Возвращает количество элементов в этом наборе (его мощность).
Задано в:
size в интерфейсе Collection<E>
Задано в:
size в интерфейсе Set<E>
Возвращает:
количество элементов в этом наборе (его мощность)

isEmpty

public boolean isEmpty()
Возвращает true , если этот набор не содержит элементов.
Задано в:
isEmpty в интерфейсе Collection<E>
Задано в:
isEmpty в интерфейсе Set<E>
Переопределяет:
isEmpty в классе AbstractCollection<E>
Возвращает:
true , если этот набор не содержит элементов

contains

public boolean contains(Object o)
Возвращает true , если этот набор содержит указанный элемент. Более формально, возвращает true тогда и только тогда, когда этот набор содержит элемент e, такой, что Objects.equals(o, e).
Задано в:
contains в интерфейсе Collection<E>
Задано в:
contains в интерфейсе Set<E>
Переопределяет:
contains в классе AbstractCollection<E>
Параметры:
o - элемент, чьё присутствие в этом наборе необходимо проверить
Возвращает:
true , если этот набор содержит указанный элемент

add

public boolean add(E e)
Добавляет указанный элемент в этот набор, если он ещё не присутствует. Более формально, добавляет указанный элемент e в этот набор, если этот набор не содержит элемент e2, такой, что Objects.equals(e, e2). Если этот набор уже содержит элемент, вызов оставляет набор неизменным и возвращает false.
Задано в:
add в интерфейсе Collection<E>
Задано в:
add в интерфейсе Set<E>
Переопределяет:
add в классе AbstractCollection<E>
Параметры:
e - элемент, который нужно добавить в этот набор
Возвращает:
true , если этот набор ещё не содержал указанный элемент

remove

public boolean remove(Object o)
Удаляет указанный элемент из этого набора, если он присутствует. Более формально, удаляет элемент e, такой, что Objects.equals(o, e), если этот набор содержит такой элемент. Возвращает true , если этот набор содержал элемент (или, что равнозначно, если этот набор изменился в результате вызова). (Этот набор не будет содержать элемент после возврата вызова.)
Задано в:
remove в интерфейсе Collection<E>
Задано в:
remove в интерфейсе Set<E>
Переопределяет:
remove в классе AbstractCollection<E>
Параметры:
o - объект, который нужно удалить из этого набора, если он присутствует
Возвращает:
true , если набор содержал указанный элемент

clear

public void clear()
Удаляет все элементы из этого набора. Набор будет пустым после возврата этого вызова.
Задано в:
clear в интерфейсе Collection<E>
Задано в:
clear в интерфейсе Set<E>
Переопределяет:
clear в классе AbstractCollection<E>

clone

public Object clone()
Возвращает поверхностную копию этого HashSet экземпляра: сами элементы не клонируются.
Переопределяет:
clone в классе Object
Возвращает:
поверхностную копию этого набора
См. также:
  • Cloneable

spliterator

public Spliterator<E> spliterator()
Создаёт отложенную и быстропроверяющую Spliterator над элементами в этом наборе.

Spliterator сообщает о Spliterator.SIZED и Spliterator.DISTINCT. Переопределяющие реализации должны документировать сообщения об дополнительных характеристиках.

Задано в:
spliterator в интерфейсе Collection<E>
Задано в:
spliterator в интерфейсе Iterable<E>
Задано в:
spliterator в интерфейсе Set<E>
Возвращает:
итератор по элементам в этом наборе
С момента:
1.8

toArray

public Object[] toArray()
Описание скопировано из класса: AbstractCollection
Возвращает массив, содержащий все элементы в этом наборе. Если этот набор гарантирует какой-либо порядок возврата своих элементов итератором, этот метод должен возвращать элементы в том же порядке. Тип компонента возвращаемого массива — Object.

Возвращаемый массив будет "безопасным" в том смысле, что к нему не сохраняются ссылки из этого набора. (Другими словами, этот метод должен выделять новый массив, даже если этот набор поддерживается массивом). Таким образом, вызывающий метод свободен изменять возвращаемый массив.

Задано в:
toArray в интерфейсе Collection<E>
Задано в:
toArray в интерфейсе Set<E>
Переопределяет:
toArray в классе AbstractCollection<E>
Возвращает:
массив, тип компонента которого — Object, содержащий все элементы в этом наборе

toArray

public <T> T[] toArray(T[] a)
Описание скопировано из класса: AbstractCollection
Возвращает массив, содержащий все элементы в этом наборе; тип возвращаемого массива — тип указанного массива. Если набор помещается в указанный массив, он возвращается в нём. В противном случае выделяется новый массив с типом указанного массива и размером этого набора.

Если этот набор помещается в указанный массив с избытком (т. е. массив содержит больше элементов, чем этот набор), элемент в массиве непосредственно после конца набора устанавливается в null. (Это полезно для определения длины этого набора, только если вызывающий метод знает, что этот набор не содержит каких-либо null элементов.)

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

Задано в:
toArray в интерфейсе Collection<E>
Задано в:
toArray в интерфейсе Set<E>
Переопределяет:
toArray в классе AbstractCollection<E>
Параметры типа:
T - тип компонента массива, который должен содержать набор
Параметры:
a - массив, в который должны быть помещены элементы этого набора, если он достаточно большой; в противном случае для этой цели выделяется новый массив того же типа.
Возвращает:
массив, содержащий все элементы в этом наборе

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/HashSet.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API