Класс 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.
- Since:
- 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() |
Создаёт отложенную привязку и быстродействующий Spliterator по элементам в этом множестве. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы в этой коллекции. |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы в этой коллекции; тип возвращаемого массива соответствует указанному массиву. |
Методы, объявленные в классе 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
Подробное описание конструкторов
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/HashSet.html