Класс 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 этого класса, работают по принципу fail-fast: если множество изменяется после создания итератора любым способом, кроме вызова собственного метода remove итератора, Iterator выбрасывает исключение ConcurrentModificationException. Таким образом, при параллельном изменении итератор быстро и корректно завершается с ошибкой, а не допускает произвольного, недетерминированного поведения в неопределенный момент в будущем.
Обратите внимание, что поведение итератора по принципу fail-fast не может быть гарантировано, поскольку, вообще говоря, невозможно дать строгие гарантии при несинхронизированном параллельном изменении. Итераторы fail-fast выбрасывают ConcurrentModificationException по возможности. Поэтому было бы неправильно писать программу, корректность которой зависит от этого исключения: поведение итераторов fail-fast следует использовать только для обнаружения ошибок.
Этот класс входит в состав Java Collections Framework.
- Начиная с:
- 1.2
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
HashSet() |
Создает новое пустое множество; базовый экземпляр HashMap имеет начальную емкость по умолчанию (16) и коэффициент загрузки по умолчанию (0.75). |
HashSet |
Создает новое пустое множество; базовый экземпляр HashMap имеет указанную начальную емкость и коэффициент загрузки по умолчанию (0.75). |
HashSet |
Создает новое пустое множество; базовый экземпляр HashMap имеет указанную начальную емкость и указанный коэффициент загрузки. |
HashSet |
Создает новое множество, содержащее элементы указанной коллекции. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Добавляет указанный элемент в это множество, если он еще не присутствует. |
void |
clear() |
Удаляет все элементы из этого множества. |
Object |
clone() |
Возвращает поверхностную копию этого экземпляра HashSet: сами элементы не клонируются. |
boolean |
contains |
Возвращает true, если это множество содержит указанный элемент. |
boolean |
isEmpty() |
Возвращает true, если множество не содержит элементов. |
Iterator |
iterator() |
Возвращает итератор по элементам этого множества. |
static <T> HashSet |
newHashSet |
Создает новое пустое HashSet, подходящее для ожидаемого количества элементов. |
boolean |
remove |
Удаляет указанный элемент из этого множества, если он присутствует. |
int |
size() |
Возвращает количество элементов в этом множестве (его мощность). |
Spliterator |
spliterator() |
Создает привязываемый с задержкой и работающий по принципу fail-fast Spliterator для элементов этого множества. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы этой коллекции. |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой коллекции; тип возвращаемого массива во время выполнения совпадает с типом указанного массива. |
Методы, объявленные в классе AbstractSet
equals, hashCode, removeAll
Методы, объявленные в классе AbstractCollection
addAll, containsAll, retainAll, toArray, toArray, toString
Методы, объявленные в интерфейсе Collection
parallelStream, removeIf, stream, toArray
Подробное описание конструкторов
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 имеет указанную начальную емкость и указанный коэффициент загрузки.- Примечание к API:
- Чтобы создать
HashSetс начальной емкостью, рассчитанной на ожидаемое количество элементов, используйтеnewHashSet. - Параметры:
-
initialCapacity- начальная емкость хеш-отображения -
loadFactor- коэффициент загрузки хеш-отображения - Исключения:
-
IllegalArgumentException- если начальная емкость меньше нуля или коэффициент загрузки неположителен
HashSet
public HashSet(int initialCapacity)
HashMap имеет указанную начальную емкость и коэффициент загрузки по умолчанию (0.75).- Примечание к API:
- Чтобы создать
HashSetс начальной емкостью, рассчитанной на ожидаемое количество элементов, используйтеnewHashSet. - Параметры:
-
initialCapacity- начальная емкость хеш-таблицы - Исключения:
-
IllegalArgumentException- если начальная емкость меньше нуля
Подробное описание методов
iterator
public Iterator<E> iterator()
size
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
spliterator
public Spliterator<E> spliterator()
Spliterator для элементов этого множества. Spliterator сообщает о характеристиках Spliterator.SIZED и Spliterator.DISTINCT. В переопределяющих реализациях следует документировать сведения о дополнительных значениях характеристик.
- Определено в:
-
spliteratorв интерфейсеCollection<E> - Определено в:
-
spliteratorв интерфейсеIterable<E> - Определено в:
-
spliteratorв интерфейсеSet<E> - Возвращает:
Spliteratorдля элементов этого множества- Начиная с:
- 1.8
toArray
public Object[] toArray()
AbstractCollectionObject. Возвращаемый массив является «безопасным»: эта коллекция не хранит ссылок на него. (Иными словами, этот метод должен выделять новый массив, даже если коллекция основана на массиве.) Поэтому вызывающий код может свободно изменять возвращенный массив.
- Определено в:
-
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- массив, в который следует поместить элементы этой коллекции, если он достаточно велик; в противном случае для этой цели выделяется новый массив того же типа во время выполнения. - Возвращает:
- массив, содержащий все элементы этой коллекции
newHashSet
public static <T> HashSet<T> newHashSet(int numElements)
- Параметры типа:
T- тип элементов, хранящихся в новом множестве- Параметры:
-
numElements- ожидаемое количество элементов - Возвращает:
- созданное множество
- Исключения:
-
IllegalArgumentException- если numElements отрицательно - Начиная с:
- 19
© 1993, 2025, 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/25/docs/api/java.base/java/util/HashSet.html