- 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 
 
-  
        
       
-  
             
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 booleanadd(E e)如果指定的元素尚不存在,则将其添加到此集合中。voidclear()从该集中删除所有元素。Objectclone()返回此HashSet实例的浅表副本:未克隆元素本身。booleancontains(Object o)如果此set包含指定的元素,则返回true。booleanisEmpty()如果此集合不包含任何元素,则返回true。Iterator<E>iterator()返回此set中元素的迭代器。booleanremove(Object o)如果存在,则从该集合中移除指定的元素。intsize()返回此集合中的元素数(基数)。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:
 -  
              
iteratorin 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
 
 
 -  
 
 -