Класс 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<E> |
iterator() |
Возвращает итератор по элементам в этом множестве. |
boolean |
remove |
Удаляет указанный элемент из этого множества, если он присутствует. |
int |
size() |
Возвращает количество элементов в этом множестве (его мощность). |
Spliterator<E> |
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 структура имеет указанную начальную ёмкость и указанный коэффициент заполнения.- Параметры:
-
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> - Возвращает:
- итератор по элементам в этом наборе
- См. также:
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> - Возвращает:
- итератор по элементам в этом наборе
- С момента:
- 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- массив, в который должны быть помещены элементы этого набора, если он достаточно большой; в противном случае для этой цели выделяется новый массив того же типа. - Возвращает:
- массив, содержащий все элементы в этом наборе
© 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