W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
java.lang.Object
|---java.util.AbstractCollection<E&
|---|---java.util.AbstractSet<E&
|---|---|---java.util.HashSet<E&
public class HashSet<E>
extends AbstractSet<E>
implements Set<E>, Cloneable, Serializable
該類實(shí)現(xiàn)了由哈希表(實(shí)際上是 HashMap 實(shí)例)支持的 Set 接口。 它不保證集合的迭代順序; 特別是,它不保證訂單會(huì)隨著時(shí)間的推移保持不變。 此類允許空元素。
此類為基本操作(添加、刪除、包含和大?。┨峁┖愣ǖ臅r(shí)間性能,假設(shè)哈希函數(shù)將元素正確地分散在桶中。 迭代這個(gè)集合需要的時(shí)間與 HashSet 實(shí)例的大小(元素的數(shù)量)加上支持 HashMap 實(shí)例的“容量”(桶的數(shù)量)的總和成正比。 因此,如果迭代性能很重要,則不要將初始容量設(shè)置得太高(或負(fù)載因子太低),這一點(diǎn)非常重要。
請注意,此實(shí)現(xiàn)不同步。 如果多個(gè)線程同時(shí)訪問一個(gè)哈希集,并且至少有一個(gè)線程修改了該集,則必須在外部進(jìn)行同步。 這通常是通過在一些自然封裝集合的對(duì)象上同步來完成的。 如果不存在這樣的對(duì)象,則應(yīng)使用 Collections#synchronizedSet 方法“包裝”該集合。 這最好在創(chuàng)建時(shí)完成,以防止對(duì)集合的意外不同步訪問:
Set s = Collections.synchronizedSet(new HashSet(...));
此類的迭代器方法返回的迭代器是快速失敗的:如果在創(chuàng)建迭代器后的任何時(shí)間修改了集合,除了通過迭代器自己的 remove 方法之外的任何方式,迭代器都會(huì)拋出 ConcurrentModificationException。 因此,面對(duì)并發(fā)修改,迭代器快速而干凈地失敗,而不是在未來不確定的時(shí)間冒任意的、非確定性的行為。
請注意,不能保證迭代器的快速失敗行為,因?yàn)橐话銇碚f,在存在不同步的并發(fā)修改的情況下,不可能做出任何硬保證。 快速失敗的迭代器會(huì)盡最大努力拋出 ConcurrentModificationException。 因此,編寫一個(gè)依賴于這個(gè)異常的正確性的程序是錯(cuò)誤的:迭代器的快速失敗行為應(yīng)該只用于檢測錯(cuò)誤。
此類是 Java 集合框架的成員。
構(gòu)造函數(shù) | 描述 |
---|---|
HashSet() | 構(gòu)造一個(gè)新的空集; 支持的 HashMap 實(shí)例具有默認(rèn)的初始容量 (16) 和加載因子 (0.75)。 |
HashSet(int initialCapacity) | 構(gòu)造一個(gè)新的空集; 支持 HashMap 實(shí)例具有指定的初始容量和默認(rèn)加載因子 (0.75)。 |
HashSet(int initialCapacity, float loadFactor) | 構(gòu)造一個(gè)新的空集; 后備 HashMap 實(shí)例具有指定的初始容量和指定的負(fù)載因子。 |
HashSet(Collection<? extends E> c) | 構(gòu)造一個(gè)包含指定集合中元素的新集合。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
boolean | add(E e) | 如果指定的元素尚不存在,則將其添加到此集合中。 |
void | clear() | 從此集合中移除所有元素。 |
Object | clone() | 返回此 HashSet 實(shí)例的淺表副本:元素本身未被克隆。 |
boolean | contains(Object o) | 如果此集合包含指定的元素,則返回 true。 |
boolean | isEmpty() | 如果此集合不包含任何元素,則返回 true。 |
IteratorE | iterator() | 返回此集合中元素的迭代器。 |
boolean | remove(Object o) | 如果存在,則從此集合中刪除指定的元素。 |
int | size() | 返回此集合中的元素?cái)?shù)(其基數(shù))。 |
SpliteratorE | spliterator() | 在此集合中的元素上創(chuàng)建一個(gè)后期綁定和快速失敗的拆分器。 |
從類 java.util.AbstractCollection 繼承的方法 |
---|
addAll, containsAll, retainAll, toArray, toArray, toString |
從類 java.util.AbstractSet 繼承的方法 |
---|
equals, hashCode, removeAll |
從接口 java.util.Collection 繼承的方法 |
---|
parallelStream, removeIf, stream |
從接口 java.lang.Iterable 繼承的方法 |
---|
forEach |
從類 java.lang.Object 繼承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
從接口 java.util.Set 繼承的方法 |
---|
addAll, containsAll, equals, hashCode, removeAll, retainAll, toArray, toArray |
public HashSet()
構(gòu)造一個(gè)新的空集; 支持的 HashMap 實(shí)例具有默認(rèn)的初始容量 (16) 和加載因子 (0.75)。
public HashSet(Collection<? extends E> c)
構(gòu)造一個(gè)包含指定集合中元素的新集合。 HashMap 是使用默認(rèn)加載因子 (0.75) 和足以包含指定集合中的元素的初始容量創(chuàng)建的。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
c | 將其元素放入此集合的集合 |
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | if the specified collection is null |
public HashSet(int initialCapacity, float loadFactor)
構(gòu)造一個(gè)新的空集; 后備 HashMap 實(shí)例具有指定的初始容量和指定的負(fù)載因子。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
initialCapacity | hash map的初始容量 |
loadFactor | 哈希映射的負(fù)載因子 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果初始容量小于零,或者負(fù)載因子為非正數(shù) |
public HashSet(int initialCapacity)
構(gòu)造一個(gè)新的空集; 支持 HashMap 實(shí)例具有指定的初始容量和默認(rèn)加載因子 (0.75)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
initialCapacity | 哈希表的初始容量 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果初始容量小于零 |
public IteratorE iterator()
返回此集合中元素的迭代器。 返回的元素沒有特定的順序。
指定者:
接口 CollectionE 中的迭代器
指定者:
接口 IterableE 中的迭代器
指定者:
接口 SetE 中的迭代器
指定者:
AbstractCollectionE 類中的迭代器
返回:
此集合中元素的迭代器
public int size()
返回此集合中的元素?cái)?shù)(其基數(shù))。
指定者:
接口 CollectionE 中的大小
指定者:
接口 SetE 中的大小
指定者:
AbstractCollectionE 類中的大小
返回:
該集合中的元素?cái)?shù)量(其基數(shù))
public boolean isEmpty()
如果此集合不包含任何元素,則返回 true。
指定者:
接口 CollectionE 中的 isEmpty
指定者:
接口 SetE 中的 isEmpty
覆蓋:
類 AbstractCollectionE 中的 isEmpty
返回:
如果此集合不包含任何元素,則為 true
public boolean contains(Object o)
如果此集合包含指定的元素,則返回 true。 更正式地說,當(dāng)且僅當(dāng)此集合包含滿足 (o==null ? e==null : o.equals(e)) 的元素 e 時(shí)才返回 true。
指定者:
包含在接口 CollectionE 中
指定者:
包含在接口 SetE 中
覆蓋:
包含在類 AbstractCollectionE 中
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
o | 要測試其在該集合中的存在的元素 |
返回:
如果此集合包含指定元素,則為 true
public boolean add(E e)
如果指定的元素尚不存在,則將其添加到此集合中。 更正式地說,如果此集合不包含元素 e2,則將指定的元素 e 添加到此集合中,使得 (e==null ? e2==null : e.equals(e2))。 如果該集合已包含該元素,則調(diào)用將保持該集合不變并返回 false。
指定者:
添加接口CollectionE
指定者:
添加接口SetE
覆蓋:
添加類 AbstractCollectionE
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
e | 要添加到此集合的元素 |
返回:
如果此集合尚未包含指定元素,則為 true
public boolean remove(Object o)
如果存在,則從此集合中刪除指定的元素。 更正式地說,如果這個(gè)集合包含這樣一個(gè)元素,則刪除一個(gè)元素 e 使得 (o==null ? e==null : o.equals(e))。 如果此 set 包含該元素(或等效地,如果此 set 由于調(diào)用而更改),則返回 true。 (一旦調(diào)用返回,該集合將不包含該元素。)
指定者:
在接口 CollectionE 中刪除
指定者:
在接口 SetE 中刪除
覆蓋:
在類 AbstractCollectionE 中刪除
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
o | 要從此集合中刪除的對(duì)象(如果存在) |
返回:
如果集合包含指定元素,則為 true
public void clear()
從此集合中移除所有元素。 此調(diào)用返回后,該集合將為空。
指定者:
在界面 CollectionE 中清除
指定者:
在接口 SetE 中清除
覆蓋:
在類 AbstractCollectionE 中清除
public Object clone()
返回此 HashSet 實(shí)例的淺表副本:元素本身未被克隆。
覆蓋:
在類 Object 中克隆
返回:
這個(gè)集合的淺拷貝
public SpliteratorE spliterator()
在此集合中的元素上創(chuàng)建一個(gè)后期綁定和快速失敗的拆分器。
Spliterator 報(bào)告 Spliterator#SIZED 和 Spliterator#DISTINCT。 覆蓋實(shí)現(xiàn)應(yīng)記錄附加特征值的報(bào)告。
指定者:
接口 CollectionE 中的分離器
指定者:
接口 IterableE 中的分離器
指定者:
接口 SetE 中的分離器
返回:
此集合中元素的拆分器
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: