Spec-Zone .ru
спецификации, руководства, описания, API
|
E
- тип элементов сохраняется этим наборомpublic class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable
Этот класс предлагает постоянную производительность времени для основных операций (add, remove, contains и size), предполагая, что хеш-функция рассеивает элементы должным образом среди блоков. Итерация по этому набору требует времени, пропорционального сумме размера экземпляра HashSet (число элементов) плюс "емкость" отступающего экземпляра HashMap (число блоков). Таким образом очень важно не установить начальную емкость слишком высоко (или коэффициент загрузки слишком низко), если итеративная производительность важна.
Отметьте, что эта реализация не синхронизируется. Если многократные потоки получают доступ к набору хеша одновременно, и по крайней мере один из потоков изменяет набор, он должен синхронизироваться внешне. Это обычно выполняется, синхронизируясь на некотором объекте, который естественно инкапсулирует набор. Если никакой такой объект не существует, набор должен быть "обернут", используя Collections.synchronizedSet
метод. Это лучше всего делается во время создания, чтобы предотвратить случайный несинхронизируемый доступ к набору:
Set s = Collections.synchronizedSet(new HashSet(...));
iterators, возвращенные методом iterator этого класса, являются сбоем быстро: если набор изменяется когда-либо после того, как iterator создается, всегда кроме через собственный метод remove iterator, Iterator бросает a ConcurrentModificationException
. Таким образом, перед лицом параллельной модификации, iterator перестал работать быстро и чисто, вместо того, чтобы рискнуть произвольным, недетерминированным поведением в неопределенное время в будущем.
Отметьте, что поведение сбоя быстро iterator не может быть гарантировано, как, вообще говоря, невозможно сделать любые трудные гарантии в присутствии несинхронизируемой параллельной модификации. Перестаньте работать быстро iterators бросают ConcurrentModificationException на основе максимальных усилий. Поэтому, было бы неправильно записать программу, которая зависела от этого исключения для его правильности: поведение сбоя быстро iterators должно использоваться только, чтобы обнаружить ошибки.
Этот класс является элементом Платформы Наборов Java.
Collection
, Set
, TreeSet
, HashMap
, Сериализированная ФормаКонструктор и Описание |
---|
HashSet()
Создает новое, пустое множество; у отступающего экземпляра HashMap есть начальная емкость по умолчанию (16) и коэффициент загрузки (0.75).
|
HashSet(Collection<? extends E> c)
Создает новый набор, содержащий элементы в указанном наборе.
|
HashSet(int initialCapacity)
Создает новое, пустое множество; у отступающего экземпляра HashMap есть указанная начальная емкость и коэффициент загрузки по умолчанию (0.75).
|
HashSet(int initialCapacity, float loadFactor)
Создает новое, пустое множество; у отступающего экземпляра HashMap есть указанная начальная емкость и указанный коэффициент загрузки.
|
Модификатор и Тип | Метод и Описание |
---|---|
boolean |
add(E e)
Добавляет указанный элемент к этому набору, если это уже не присутствует.
|
void |
clear()
Удаляет все элементы от этого набора.
|
Объект |
clone()
Возвращает мелкую копию этого экземпляра HashSet: сами элементы не клонируются.
|
boolean |
contains(Object o)
true возвратов, если этот набор содержит указанный элемент.
|
boolean |
isEmpty()
true возвратов, если этот набор не содержит элементов.
|
Iterator<E> |
iterator()
Возвращает iterator по элементам в этом наборе.
|
boolean |
remove(Object o)
Удаляет указанный элемент из этого набора, если это присутствует.
|
int |
size()
Возвращает число элементов в этом наборе (его количество элементов).
|
equals, hashCode, removeAll
addAll, containsAll, retainAll, toArray, toArray, toString
public HashSet()
public HashSet(Collection<? extends E> c)
c
- набор, элементы которого должны быть помещены в этот наборNullPointerException
- если указанный набор является нулемpublic HashSet(int initialCapacity, float loadFactor)
initialCapacity
- начальная емкость карты хешаloadFactor
- коэффициент загрузки карты хешаIllegalArgumentException
- если начальная емкость является меньше чем нуль, или если коэффициент загрузки неположителенpublic HashSet(int initialCapacity)
initialCapacity
- начальная емкость хэш-таблицыIllegalArgumentException
- если начальная емкость является меньше чем нульpublic Iterator<E> iterator()
iterator
в интерфейсе Iterable<E>
iterator
в интерфейсе Collection<E>
iterator
в интерфейсе Set<E>
iterator
в классе AbstractCollection<E>
ConcurrentModificationException
public int size()
size
в интерфейсе Collection<E>
size
в интерфейсе Set<E>
size
в классе AbstractCollection<E>
public boolean isEmpty()
isEmpty
в интерфейсе Collection<E>
isEmpty
в интерфейсе Set<E>
isEmpty
в классе AbstractCollection<E>
public boolean contains(Object o)
contains
в интерфейсе Collection<E>
contains
в интерфейсе Set<E>
contains
в классе AbstractCollection<E>
o
- элемент, присутствие которого в этом наборе должно быть протестированоpublic boolean add(E e)
add
в интерфейсе Collection<E>
add
в интерфейсе Set<E>
add
в классе AbstractCollection<E>
e
- элемент, который будет добавлен к этому наборуpublic boolean remove(Object o)
remove
в интерфейсе Collection<E>
remove
в интерфейсе Set<E>
remove
в классе AbstractCollection<E>
o
- объект, который будет удален из этого набора, если существующийpublic void clear()
clear
в интерфейсе Collection<E>
clear
в интерфейсе Set<E>
clear
в классе AbstractCollection<E>
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.