鴻蒙OS HashSet

2022-07-25 14:03 更新

HashSet

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ù)摘要

構(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è)包含指定集合中元素的新集合。

方法總結(jié)

修飾符和類型 方法 描述
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

構(gòu)造函數(shù)詳細(xì)信息

HashSet

public HashSet()

構(gòu)造一個(gè)新的空集; 支持的 HashMap 實(shí)例具有默認(rèn)的初始容量 (16) 和加載因子 (0.75)。

HashSet

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

HashSet

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ù)

HashSet

public HashSet(int initialCapacity)

構(gòu)造一個(gè)新的空集; 支持 HashMap 實(shí)例具有指定的初始容量和默認(rèn)加載因子 (0.75)。

參數(shù):

參數(shù)名稱 參數(shù)描述
initialCapacity 哈希表的初始容量

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果初始容量小于零

方法詳情

iterator

public IteratorE iterator()

返回此集合中元素的迭代器。 返回的元素沒有特定的順序。

指定者:

接口 CollectionE 中的迭代器

指定者:

接口 IterableE 中的迭代器

指定者:

接口 SetE 中的迭代器

指定者:

AbstractCollectionE 類中的迭代器

返回:

此集合中元素的迭代器

size

public int size()

返回此集合中的元素?cái)?shù)(其基數(shù))。

指定者:

接口 CollectionE 中的大小

指定者:

接口 SetE 中的大小

指定者:

AbstractCollectionE 類中的大小

返回:

該集合中的元素?cái)?shù)量(其基數(shù))

isEmpty

public boolean isEmpty()

如果此集合不包含任何元素,則返回 true。

指定者:

接口 CollectionE 中的 isEmpty

指定者:

接口 SetE 中的 isEmpty

覆蓋:

類 AbstractCollectionE 中的 isEmpty

返回:

如果此集合不包含任何元素,則為 true

contains

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

add

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

remove

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

clear

public void clear()

從此集合中移除所有元素。 此調(diào)用返回后,該集合將為空。

指定者:

在界面 CollectionE 中清除

指定者:

在接口 SetE 中清除

覆蓋:

在類 AbstractCollectionE 中清除

clone

public Object clone()

返回此 HashSet 實(shí)例的淺表副本:元素本身未被克隆。

覆蓋:

在類 Object 中克隆

返回:

這個(gè)集合的淺拷貝

spliterator

public SpliteratorE spliterator()

在此集合中的元素上創(chuàng)建一個(gè)后期綁定和快速失敗的拆分器。

Spliterator 報(bào)告 Spliterator#SIZED 和 Spliterator#DISTINCT。 覆蓋實(shí)現(xiàn)應(yīng)記錄附加特征值的報(bào)告。

指定者:

接口 CollectionE 中的分離器

指定者:

接口 IterableE 中的分離器

指定者:

接口 SetE 中的分離器

返回:

此集合中元素的拆分器

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)