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, removeAlladdAll, containsAll, retainAll, toArray, toArray, toStringfinalize, getClass, notify, notifyAll, wait, wait, waitaddAll, containsAll, equals, hashCode, removeAll, retainAll, toArray, toArrayparallelStream, removeIf, streampublic 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在这个集合中的元素
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.