Most visited

Recently visited

Added in API level 1

HashSet

public class HashSet
extends AbstractSet<E> implements Set<E>, Cloneable, Serializable

java.lang.Object
   ↳ java.util.AbstractCollection<E>
     ↳ java.util.AbstractSet<E>
       ↳ java.util.HashSet<E>
Known Direct Subclasses


该类实现了Set接口,由一个散列表(实际上是一个HashMap实例)支持。 它对集合的迭代次序没有任何保证; 特别是,它不能保证订单会随着时间的推移保持不变。 这个类允许null元素。

这个类提供了基本操作(add,remove,containssize)固定的时间性能,假定哈希函数将分散的桶中正确的元素。 遍历该集合需要时间正比于HashSet实例的大小(元素的数量)加上所述背衬HashMap实例的“容量”(桶的数量)的总和。 因此,如果迭代性能很重要,不要将初始容量设置得太高(或者负载因子太低)是非常重要的。

请注意,此实现不同步。 如果多个线程同时访问散列集,并且至少有一个线程修改了该集,则它必须在外部同步。 这通常是通过在自然封装集合的某个对象上进行同步来完成的。 如果不存在这样的对象,则该组应该使用Collections.synchronizedSet方法“包装”。 这最好在创建时完成,以防止意外的非同步访问:

   Set s = Collections.synchronizedSet(new HashSet(...));

这个类的iterator方法返回的迭代器是快速失败的 :如果在迭代器创建后随时修改该集合,除了通过迭代器自己的remove方法之外,迭代器会抛出ConcurrentModificationException 因此,面对并发修改,迭代器快速而干净地失败,而不是在将来某个未确定的时间冒着任意的,非确定性的行为风险。

请注意,迭代器的故障快速行为无法得到保证,因为一般来说,在存在非同步并发修改的情况下不可能做出任何硬性保证。 失败快速迭代器以尽力而为的方式抛出ConcurrentModificationException 因此,编写一个依赖于此异常的程序是正确的: 迭代器的快速失败行为应仅用于检测错误。

本课程是 Java Collections Framework的成员。

也可以看看:

Summary

Public constructors

HashSet()

构造一个新的空集; 背衬HashMap实例具有默认的初始容量(16)和负载因子(0.75)。

HashSet(Collection<? extends E> c)

构造一个包含指定集合中元素的新集合。

HashSet(int initialCapacity, float loadFactor)

构造一个新的空集; 后台HashMap实例具有指定的初始容量和指定的加载因子。

HashSet(int initialCapacity)

构造一个新的空集; 背景HashMap实例具有指定的初始容量和默认加载因子(0.75)。

Public methods

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

Inherited methods

From class java.util.AbstractSet
From class java.util.AbstractCollection
From class java.lang.Object
From interface java.util.Set
From interface java.util.Collection
From interface java.lang.Iterable

Public constructors

HashSet

Added in API level 1
HashSet ()

构造一个新的空集; 背景HashMap实例具有默认初始容量(16)和负载因子(0.75)。

HashSet

Added in API level 1
HashSet (Collection<? extends E> c)

构造一个包含指定集合中元素的新集合。 HashMap是使用默认加载因子(0.75)和足以包含指定集合中元素的初始容量创建的。

Parameters
c Collection: the collection whose elements are to be placed into this set
Throws
NullPointerException if the specified collection is null

HashSet

Added in API level 1
HashSet (int initialCapacity, 
                float loadFactor)

构造一个新的空集; 背景HashMap实例具有指定的初始容量和指定的负载因子。

Parameters
initialCapacity int: the initial capacity of the hash map
loadFactor float: the load factor of the hash map
Throws
IllegalArgumentException if the initial capacity is less than zero, or if the load factor is nonpositive

HashSet

Added in API level 1
HashSet (int initialCapacity)

构造一个新的空集; 背景HashMap实例具有指定的初始容量和默认加载因子(0.75)。

Parameters
initialCapacity int: the initial capacity of the hash table
Throws
IllegalArgumentException if the initial capacity is less than zero

Public methods

add

Added in API level 1
boolean add (E e)

如果指定的元素不存在,则将其添加到此集合中。 更正式地说,如果这个集合不包含元素e2,例如(e==null ? e2==null : e.equals(e2)) ,则将指定元素e添加到此集合中。 如果该组已包含该元素,则该呼叫将保持该设置不变并返回false

Parameters
e E: element to be added to this set
Returns
boolean true if this set did not already contain the specified element

clear

Added in API level 1
void clear ()

删除此组中的所有元素。 此通话返回后,该设置将为空。

clone

Added in API level 1
Object clone ()

返回此 HashSet实例的浅表副本:元素本身未被克隆。

Returns
Object a shallow copy of this set

contains

Added in API level 1
boolean contains (Object o)

如果此集合包含指定的元素,则返回true 更正式地说,返回true当且仅当这个集合包含一个元素e,例如(o==null ? e==null : o.equals(e))

Parameters
o Object: element whose presence in this set is to be tested
Returns
boolean true if this set contains the specified element

isEmpty

Added in API level 1
boolean isEmpty ()

如果此集合不包含元素,则返回 true

Returns
boolean true if this set contains no elements

iterator

Added in API level 1
Iterator<E> iterator ()

返回此集合中元素的迭代器。 元素以特定顺序返回。

Returns
Iterator<E> an Iterator over the elements in this set

也可以看看:

remove

Added in API level 1
boolean remove (Object o)

如果存在,则从该集合中删除指定的元素。 更正式地说,删除一个元素e,例如(o==null ? e==null : o.equals(e)) ,如果这个集合包含这样一个元素。 如果此集合包含元素(或者等价地,如果此集合因呼叫而改变),则返回true (一旦调用返回,此集合将不包含该元素。)

Parameters
o Object: object to be removed from this set, if present
Returns
boolean true if the set contained the specified element

size

Added in API level 1
int size ()

返回此集合中元素的数量(基数)。

Returns
int the number of elements in this set (its cardinality)

spliterator

Added in API level 24
Spliterator<E> spliterator ()

在此集合中的元素上创建 late-binding快速故障 Spliterator

Spliterator报告SIZEDDISTINCT 重写实现应记录附加特征值的报告。

Returns
Spliterator<E> a Spliterator over the elements in this set

Hooray!