public interface Set<E> extends Collection<E>

一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。

 

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

此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。 

此类为基本操作提供了稳定性能,这些基本操作包括 add、remove、contains 和 size,假定哈希函数将这些元素正确地分布在桶中。对此 set 进行迭代所需的时间与 HashSet 实例的大小(元素的数量)和底层 HashMap 实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。

 

构造方法

HashSet() 

    构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。 

HashSet(Collection<? extends E> c) 

    构造一个包含指定 collection 中的元素的新 set。 

HashSet(int initialCapacity) 

    构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和默认的加载因子(0.75)。 

HashSet(int initialCapacity, float loadFactor) 

    构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和指定的加载因子。