Класс 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
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
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()
- Указано в:
-
iteratorв интерфейсеCollection<E> - Указано в:
-
iteratorв интерфейсеIterable<E> - Указано в:
-
iteratorв интерфейсеSet<E> - Указано в:
-
iteratorв классеAbstractCollection<E> - Возвращает:
- итератор по элементам в этом наборе
- См. также:
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 - Возвращает:
- неглубокая копия этого набора
- См. также:
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, 2023, 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/21/docs/api/java.base/java/util/HashSet.html