- 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Метод возвращает итератор, который работает по принципу fail-fast: если после создания итератора множество изменяется любым способом, кроме как через собственные методы итератора,removeПосле метода итератор выбрасываетConcurrentModificationException。 Поэтому при конкурентном изменении итератор быстро и корректно завершается с ошибкой, а не рискует произвольным недетерминированным поведением в неопределённый момент в будущем.Обратите внимание, что поведение быстрого сбоя итератора не гарантируется, потому что при несинхронизированных параллельных изменениях жёсткие гарантии невозможны. Итератор с быстрым сбоем выбрасывает исключение по принципу best effort.
ConcurrentModificationException。 Поэтому писать программу, зависящую от этого исключения для проверки корректности, ошибочно: быстрое поведение итератора при сбое служит только для обнаружения ошибок.- Доступно начиная с версии: 1.2. Смотрите также:
Collection,Set,TreeSet,HashMap, Serialized Form
-
-
构造方法摘要
构造方法 构造器 Описание HashSet()Создаёт новое пустое множество; поддерживаетHashMapЭкземпляр имеет начальную ёмкость по умолчанию (16) и коэффициент загрузки (0.75).HashSet(int initialCapacity)Создаёт новое пустое множество; поддерживаетHashMapЭкземпляр имеет указанную начальную ёмкость и коэффициент загрузки по умолчанию (0.75).HashSet(int initialCapacity, float loadFactor)Создаёт новый пустой набор; поддерживаетHashMapэкземпляр с указанной начальной ёмкостью и указанным коэффициентом загрузки.HashSet(Collection<? extends E> c)Создаёт новый набор, содержащий элементы указанной коллекции.
-
方法摘要
Все методы Методы экземпляра Конкретные методы Переменная и тип Метод Описание booleanadd(E e)Добавляет указанный элемент в этот набор, если он ещё не существует.voidclear()Удаляет все элементы из этого набора.Objectclone()Возвращает этотHashSetВозвращает поверхностную копию экземпляра: сами элементы не клонируются.booleancontains(Object o)Возвращает, если этот набор содержит указанный элементtrue。booleanisEmpty()Если эта коллекция не содержит элементов, метод возвращаетtrue。Iterator<E>iterator()Возвращает итератор по элементам этого set.booleanremove(Object o)Удаляет указанный элемент из этой коллекции, если он присутствует.intsize()Возвращает количество элементов в этой коллекции (мощность).Spliterator<E>spliterator()Создаёт late-binding и fail-fast итератор по элементам этой коллекцииSpliterator。-
声明方法的类 java.util.AbstractSet
equals, hashCode, removeAll
-
声明方法的类 java.util.AbstractCollection
addAll, containsAll, retainAll, toArray, toArray, toString
-
声明方法的接口 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-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()
Возвращает итератор элементов этого set. Элементы возвращаются в определённом порядке.- Specified by:
iterator在界面Collection<E>- Specified by:
iterator在界面Iterable<E>- Specified by:
iteratorin interfaceSet<E>- Specified by:
iterator类AbstractCollection<E>- Результат итератор элементов этой коллекции См. также:
ConcurrentModificationException
-
size
public int size()
Возвращает количество элементов в этой коллекции (мощность).
-
isEmpty
public boolean isEmpty()
Возвращает true, если эта коллекция не содержит элементовtrue。- Specified by:
isEmpty在界面Collection<E>- Specified by:
isEmpty在界面Set<E>- Переопределяет:
isEmpty类AbstractCollection<E>- Результат
truetrue, если эта коллекция не содержит элементов
-
contains
public boolean contains(Object o)
Возвращает true, если этот set содержит указанный элементtrue. Более формально, возвращает truetrueтогда и только тогда, когда этот set содержит элементe,使得Objects.equals(o, e)。- Specified by:
contains在界面Collection<E>- Specified by:
contains在界面Set<E>- Переопределяет:
contains在类AbstractCollection<E>- Параметры
o- элемент, наличие которого в этой коллекции нужно проверить Результатtruetrue, если эта set содержит указанный элемент
-
add
public boolean add(E e)
Добавляет указанный элемент в эту коллекцию, если он ещё не присутствует. Точнее, добавляет указанный элементeв эту коллекцию, если set не содержит элементe2使得Objects.equals(e, e2). Если эта set уже содержит элемент, вызов оставляет set без изменений и возвращаетfalse。- Specified by:
add在界面Collection<E>- Specified by:
add在界面Set<E>- Переопределяет:
add在类AbstractCollection<E>- Параметры
e- элемент, который нужно добавить в эту коллекцию Результатtruetrue, если эта коллекция ещё не содержала указанный элемент
-
remove
public boolean remove(Object o)
Удаляет указанный элемент из этой коллекции, если он присутствует. Точнее, удаляет элементe,使得Objects.equals(o, e), если эта коллекция содержит такой элемент. Возвращаетtrue(или эквивалентно, если коллекция изменилась в результате вызова). (После возврата из вызова коллекция не будет содержать этот элемент.)- Specified by:
remove在界面Collection<E>- Specified by:
remove在界面Set<E>- Переопределяет:
remove类AbstractCollection<E>- Параметры
o- объект, который нужно удалить из этой коллекции, если он присутствует Результатtruetrue, если коллекция содержала указанный элемент
-
clear
public void clear()
Удаляет все элементы из этой коллекции. После возврата из этого вызова коллекция будет пустой.- Specified by:
clear在界面Collection<E>- Specified by:
clear在界面Set<E>- Переопределяет:
clear类AbstractCollection<E>
-
clone
public Object clone()
Возвращает поверхностную копию этогоHashSetэкземпляра: сам элемент не клонируется.
-
spliterator
public Spliterator<E> spliterator()
Создает late-binding и отказоустойчивыйSpliteratorитератор по элементам этой коллекции.SpliteratorСообщаетSpliterator.SIZEDиSpliterator.DISTINCT. Переопределяющие реализации должны документировать отчет о других значениях характеристик.- Specified by:
spliterator在界面Collection<E>- Specified by:
spliterator在界面Iterable<E>- Specified by:
spliterator在界面Set<E>- Результат: a
Spliteratorпо элементам этой коллекции. Начиная с версии: 1.8
-
-