- 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的成员。
- 从以下版本开始:
- 1.2
- 另请参见:
-
Collection
,Set
,TreeSet
,HashMap
, Serialized Form
-
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 boolean
add(E e)
如果指定的元素尚不存在,则将其添加到此集合中。void
clear()
从该集中删除所有元素。Object
clone()
返回此HashSet
实例的浅表副本:未克隆元素本身。boolean
contains(Object o)
如果此set包含指定的元素,则返回true
。boolean
isEmpty()
如果此集合不包含任何元素,则返回true
。Iterator<E>
iterator()
返回此set中元素的迭代器。boolean
remove(Object o)
如果存在,则从该集合中移除指定的元素。int
size()
返回此集合中的元素数(基数)。Spliterator<E>
spliterator()
在此集合中的元素上创建late-binding和失败快速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:
-
iterator
in interfaceSet<E>
- Specified by:
-
iterator
类AbstractCollection<E>
- 结果
- 对此集合中元素的迭代器
- 另请参见:
-
ConcurrentModificationException
-
size
public int size()
返回此集合中的元素数(基数)。
-
isEmpty
public boolean isEmpty()
如果此集合不包含任何元素,则返回true
。- Specified by:
-
isEmpty
在界面Collection<E>
- Specified by:
-
isEmpty
在界面Set<E>
- 重写:
-
isEmpty
类AbstractCollection<E>
- 结果
-
true
如果此集合不包含任何元素
-
contains
public boolean contains(Object o)
如果此set包含指定的元素,则返回true
。 更正式地说,返回true
当且仅当此set包含的元素e
,使得Objects.equals(o, e)
。- Specified by:
-
contains
在界面Collection<E>
- Specified by:
-
contains
在界面Set<E>
- 重写:
-
contains
在类AbstractCollection<E>
- 参数
-
o
- 要测试其在此集合中的存在的元素 - 结果
-
true
如果此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
- 要添加到此集合的元素 - 结果
-
true
如果此集合尚未包含指定的元素
-
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
- 要从此集合中删除的对象(如果存在) - 结果
-
true
如果集合包含指定的元素
-
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
-
-