Spec-Zone.ru › OpenJDK 24

Класс 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.

Since:
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()
Возвращает итератор по элементам в этом множестве.
static <T> HashSet<T> newHashSet(int numElements)
Создаёт новое пустое множество HashSet, подходящее для ожидаемого количества элементов.
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 имеет указанную начальную ёмкость и указанный коэффициент заполнения.
Примечание 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>
Возвращает:
итератор по элементам в этом наборе
См. также:
  • 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>
Возвращает:
Spliterator по элементам в этом наборе
С:
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 - массив, в который должны быть помещены элементы этой коллекции, если он достаточно большой; в противном случае для этой цели выделяется новый массив того же типа времени выполнения.
Возвращает:
массив, содержащий все элементы в этой коллекции

newHashSet

public static <T> HashSet<T> newHashSet(int numElements)
Создаёт новый пустой HashSet, подходящий для ожидаемого количества элементов. Возвращаемый набор использует значение по умолчанию для коэффициента загрузки 0,75, и его начальная ёмкость, как правило, достаточно велика, чтобы ожидаемое количество элементов можно было добавить без изменения размера набора.
Параметры типа:
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

Spec-Zone.ru

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