HashSet的用法
来源:互联网 发布:mac os yosemite 编辑:程序博客网 时间:2024/06/05 04:25
public class HashSet<E>
- extends AbstractSet<E>
- implements Set<E>, Cloneable, Serializable
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null 元素。
此类为基本操作提供了稳定性能,这些基本操作包括 add、remove、contains 和 size,假定哈希函数将这些元素正确地分布在桶中。对此 set 进行迭代所需的时间与HashSet 实例的大小(元素的数量)和底层 HashMap 实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。
注意,此实现不是同步的。如果多个线程同时访问一个哈希 set,而其中至少一个线程修改了该 set,那么它必须 保持外部同步。这通常是通过对自然封装该 set 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用Collections.synchronizedSet
方法来“包装” set。最好在创建时完成这一操作,以防止对该 set 进行意外的不同步访问:
Set s = Collections.synchronizedSet(new HashSet(...));
此类的 iterator 方法返回的迭代器是快速失败 的:在创建迭代器之后,如果对 set 进行修改,除非通过迭代器自身的remove 方法,否则在任何时间以任何方式对其进行修改,Iterator 都将抛出 ConcurrentModificationException
。因此,面对并发的修改,迭代器很快就会完全失败,而不冒将来在某个不确定时间发生任意不确定行为的风险。
注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器在尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误做法:迭代器的快速失败行为应该仅用于检测 bug。
此类是 Java Collections Framework 的成员。
- 从以下版本开始:
- 1.2
- 另请参见:
Collection
,Set
,TreeSet
,HashMap
,序列化表格
HashSet()
构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。
HashSet(Collection<? extendsE> c)
构造一个包含指定 collection 中的元素的新 set。
HashSet(int initialCapacity)
构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和默认的加载因子(0.75)。
HashSet(int initialCapacity, float loadFactor)
构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和指定的加载因子。
boolean
add(E e)
如果此 set 中尚未包含指定元素,则添加指定元素。
void
clear()
从此 set 中移除所有元素。
Object
clone()
返回此 HashSet 实例的浅表副本:并没有复制这些元素本身。
boolean
contains(Object o)
如果此 set 包含指定元素,则返回 true。
boolean
isEmpty()
如果此 set 不包含任何元素,则返回 true。
Iterator<E>
iterator()
返回对此 set 中元素进行迭代的迭代器。
boolean
remove(Object o)
如果指定元素存在于此 set 中,则将其移除。
int
size()
返回此 set 中的元素的数量(set 的容量)。
equals,hashCode,removeAll
addAll,containsAll, retainAll, toArray, toArray, toString
finalize,getClass, notify, notifyAll,wait, wait, wait
addAll,containsAll, equals, hashCode,removeAll, retainAll, toArray,toArray
HashSet
public HashSet()
- 构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。
HashSet
public HashSet(Collection<? extends E> c)
- 构造一个包含指定 collection 中的元素的新 set。使用默认的加载因子 0.75 和足以包含指定 collection 中所有元素的初始容量来创建HashMap。
- 参数:
c
- 其中的元素将存放在此 set 中的 collection- 抛出:
NullPointerException
- 如果指定的 collection 为 null
HashSet
public HashSet(int initialCapacity, float loadFactor)
- 构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和指定的加载因子。
- 参数:
initialCapacity
- 哈希映射的初始容量loadFactor
- 哈希映射的加载因子- 抛出:
IllegalArgumentException
- 如果初始容量小于零,或者加载因子为非正数
HashSet
public HashSet(int initialCapacity)
- 构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和默认的加载因子(0.75)。
- 参数:
initialCapacity
- 哈希表的初始容量- 抛出:
IllegalArgumentException
- 如果初始容量小于零
iterator
public Iterator<E> iterator()
- 返回对此 set 中元素进行迭代的迭代器。返回元素的顺序并不是特定的。
- 指定者:
- 接口
Iterable<E>
中的iterator
- 指定者:
- 接口
Collection<E>
中的iterator
- 指定者:
- 接口
Set<E>
中的iterator
- 指定者:
- 类
AbstractCollection<E>
中的iterator
- 返回:
- 对此 set 中元素进行迭代的 Iterator
- 另请参见:
ConcurrentModificationException
size
public int size()
- 返回此 set 中的元素的数量(set 的容量)。
- 指定者:
- 接口
Collection<E>
中的size
- 指定者:
- 接口
Set<E>
中的size
- 指定者:
- 类
AbstractCollection<E>
中的size
- 返回:
- 此 set 中的元素的数量(set 的容量)
isEmpty
public boolean isEmpty()
- 如果此 set 不包含任何元素,则返回 true。
- 指定者:
- 接口
Collection<E>
中的isEmpty
- 指定者:
- 接口
Set<E>
中的isEmpty
- 覆盖:
- 类
AbstractCollection<E>
中的isEmpty
- 返回:
- 如果此 set 不包含任何元素,则返回 true
contains
public boolean contains(Object o)
- 如果此 set 包含指定元素,则返回 true。 更确切地讲,当且仅当此 set 包含一个满足 (o==null ? e==null : o.equals(e)) 的e 元素时,返回 true。
- 指定者:
- 接口
Collection<E>
中的contains
- 指定者:
- 接口
Set<E>
中的contains
- 覆盖:
- 类
AbstractCollection<E>
中的contains
- 参数:
o
- 其在此 set 中的存在已得到测试的元素- 返回:
- 如果此 set 包含指定元素,则返回 true
add
public boolean add(E e)
- 如果此 set 中尚未包含指定元素,则添加指定元素。更确切地讲,如果此 set 没有包含满足 (e==null ? e2==null : e.equals(e2)) 的元素e2,则向此 set 添加指定的元素 e。如果此 set 已包含该元素,则该调用不更改 set 并返回 false。
- 指定者:
- 接口
Collection<E>
中的add
- 指定者:
- 接口
Set<E>
中的add
- 覆盖:
- 类
AbstractCollection<E>
中的add
- 参数:
e
- 将添加到此 set 中的元素- 返回:
- 如果此 set 尚未包含指定元素,则返回 true
remove
public boolean remove(Object o)
- 如果指定元素存在于此 set 中,则将其移除。更确切地讲,如果此 set 包含一个满足 (o==null ? e==null : o.equals(e)) 的元素e,则将其移除。如果此 set 已包含该元素,则返回 true(或者:如果此 set 因调用而发生更改,则返回 true)。(一旦调用返回,则此 set 不再包含该元素)。
- 指定者:
- 接口
Collection<E>
中的remove
- 指定者:
- 接口
Set<E>
中的remove
- 覆盖:
- 类
AbstractCollection<E>
中的remove
- 参数:
o
- 如果存在于此 set 中则需要将其移除的对象- 返回:
- 如果 set 包含指定元素,则返回 true
clear
public void clear()
- 从此 set 中移除所有元素。此调用返回后,该 set 将为空。
- 指定者:
- 接口
Collection<E>
中的clear
- 指定者:
- 接口
Set<E>
中的clear
- 覆盖:
- 类
AbstractCollection<E>
中的clear
clone
public Object clone()
- 返回此 HashSet 实例的浅表副本:并没有复制这些元素本身。
- 覆盖:
- 类
Object
中的clone
- 返回:
- 此 set 的浅表副本
- 另请参见:
Cloneable
- HashSet类的用法
- HashSet的用法
- HashSet类的用法
- hashset的用法
- HashSet的用法
- HashSet的用法
- HashSet的基本用法
- java中hashset的用法
- Java中HashSet的用法
- HashMap和HashSet的用法
- HashSet用法
- HashSet用法
- HashSet用法
- Java HashSet和LinkedHashSet的用法
- Java HashSet和LinkedHashSet的用法
- HashSet类的用法及代码
- Java HashSet和LinkedHashSet的用法
- java集合——HashSet的用法
- git的.gitignore配置
- 五大常用算法:分治、动态规划、贪心、回溯和分支界定
- CSR8615蓝牙芯片功能调试入门笔记---上
- Android View.onMeasure方法的理解
- Autolayout让你界面适配飞起来
- HashSet的用法
- Core Data入门
- MindMapper中怎么实现便笺的添加
- git和SVN类似
- 《HBase权威指南》读书笔记4
- js简单实现国际化
- 判断所给二叉树是否是红黑树
- android反编译
- Android 百度地图开发(二)