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(...));
该类iterator方法返回的迭代器是故障快速的 :如果集合在迭代器创建之后的任何时间被修改,除了通过迭代器自己的remove方法之外,迭代器会抛出一个ConcurrentModificationException
。 因此,面对并发修改,迭代器将快速而干净地失败,而不是在未来未确定的时间冒着任意的非确定性行为。
请注意,迭代器的故障快速行为无法保证,因为一般来说,在不同步并发修改的情况下,无法做出任何硬性保证。 失败快速迭代器尽力投入ConcurrentModificationException 。 因此,编写依赖于此异常的程序的正确性将是错误的:迭代器的故障快速行为应仅用于检测错误。
Collection
, Set
, TreeSet
, HashMap
, Serialized Form
Constructor and Description |
---|
HashSet()
构造一个新的空集合;
背景HashMap实例具有默认初始容量(16)和负载因子(0.75)。
|
HashSet(Collection<? extends E> c)
构造一个包含指定集合中的元素的新集合。
|
HashSet(int initialCapacity)
构造一个新的空集合;
背景HashMap实例具有指定的初始容量和默认负载因子(0.75)。
|
HashSet(int initialCapacity, float loadFactor)
构造一个新的空集合;
背景HashMap实例具有指定的初始容量和指定的负载因子。
|
Modifier and Type | Method and Description |
---|---|
boolean |
add(E e)
将指定的元素添加到此集合(如果尚未存在)。
|
void |
clear()
从此集合中删除所有元素。
|
Object |
clone()
返回此
HashSet实例的浅层副本:元素本身不被克隆。
|
boolean |
contains(Object o)
如果此集合包含指定的元素,则返回
true 。
|
boolean |
isEmpty()
如果此集合不包含元素,则返回
true 。
|
Iterator<E> |
iterator()
返回此集合中元素的迭代器。
|
boolean |
remove(Object o)
如果存在,则从该集合中删除指定的元素。
|
int |
size()
返回此集合中的元素数(其基数)。
|
Spliterator<E> |
spliterator()
在此集合中的元素上创建late-binding和故障快速 Spliterator 。
|
equals, hashCode, removeAll
addAll, containsAll, retainAll, toArray, toArray, toString
finalize, getClass, notify, notifyAll, wait, wait, wait
addAll, containsAll, equals, hashCode, removeAll, retainAll, toArray, toArray
parallelStream, removeIf, stream
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>
public Object clone()
public Spliterator<E> spliterator()
Spliterator
。
Spliterator
报告Spliterator.SIZED
和Spliterator.DISTINCT
。 覆盖实现应记录其他特征值的报告。
spliterator
在界面
Iterable<E>
spliterator
在界面
Collection<E>
spliterator
在界面
Set<E>
Spliterator
在这个集合中的元素