鴻蒙OS AbstractCollection

2022-07-04 16:18 更新

AbstractCollection

java.lang.Object

|---java.util.AbstractCollection<E&

public abstract class AbstractCollection<E>
extends Object
implements Collection<E>

此類提供 Collection 接口的骨架實(shí)現(xiàn),以最大限度地減少實(shí)現(xiàn)此接口所需的工作量。

要實(shí)現(xiàn)一個(gè)不可修改的集合,程序員只需要擴(kuò)展這個(gè)類并提供迭代器和大小方法的實(shí)現(xiàn)。 (迭代器方法返回的迭代器必須實(shí)現(xiàn)hasNext和next。)

要實(shí)現(xiàn)一個(gè)可修改的集合,程序員必須另外重寫這個(gè)類的 add 方法(否則會(huì)拋出 UnsupportedOperationException),并且迭代器方法返回的迭代器必須另外實(shí)現(xiàn)它的 remove 方法。

根據(jù) Collection 接口規(guī)范中的建議,程序員通常應(yīng)該提供一個(gè) void(無參數(shù))和 Collection 構(gòu)造函數(shù)。

此類中每個(gè)非抽象方法的文檔都詳細(xì)描述了它的實(shí)現(xiàn)。如果正在實(shí)現(xiàn)的集合允許更有效的實(shí)現(xiàn),則可以覆蓋這些方法中的每一個(gè)。

此類是 Java 集合框架的成員。

構(gòu)造函數(shù)摘要

修飾符 構(gòu)造函數(shù) 描述
protected AbstractCollection() 唯一的構(gòu)造函數(shù)。

方法總結(jié)

修飾符和類型 方法 描述
boolean add(E e) 確保此集合包含指定的元素(可選操作)。
boolean addAll(Collection<? extends E> c) 將指定集合中的所有元素添加到此集合(可選操作)。
void clear() 從此集合中移除所有元素(可選操作)。
boolean contains(Object o) 如果此集合包含指定元素,則返回 true。
boolean containsAll(Collection<?> c) 如果此集合包含指定集合中的所有元素,則返回 true。
boolean isEmpty() 如果此集合不包含任何元素,則返回 true。
abstract IteratorE iterator() 返回此集合中包含的元素的迭代器。
boolean remove(Object o) 如果存在,則從此集合中刪除指定元素的單個(gè)實(shí)例(可選操作)。
boolean removeAll(Collection<?> c) 移除此集合的所有也包含在指定集合中的元素(可選操作)。
boolean retainAll(Collection<?> c) 僅保留此集合中包含在指定集合中的元素(可選操作)。
abstract int size() 返回此集合中的元素?cái)?shù)。
Object[] toArray() 返回一個(gè)包含此集合中所有元素的數(shù)組。
<T> T[] toArray(T[] a) 返回一個(gè)包含此集合中所有元素的數(shù)組; 返回?cái)?shù)組的運(yùn)行時(shí)類型是指定數(shù)組的運(yùn)行時(shí)類型。
String toString() 返回此集合的字符串表示形式。
從接口 java.util.Collection 繼承的方法
equals, hashCode, parallelStream, removeIf, spliterator, stream
從接口 java.lang.Iterable 繼承的方法
forEach
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

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

AbstractCollection

protected AbstractCollection()

唯一的構(gòu)造函數(shù)。 (用于子類構(gòu)造函數(shù)的調(diào)用,通常是隱式的。)

方法詳情

iterator

public abstract IteratorE iterator()

返回此集合中包含的元素的迭代器。

指定者:

接口 CollectionE 中的迭代器

指定者:

接口 IterableE 中的迭代器

返回:

此集合中包含的元素的迭代器

size

public abstract int size()

從接口復(fù)制的描述:集合

返回此集合中的元素?cái)?shù)。 如果此集合包含多個(gè) Integer.MAX_VALUE 元素,則返回 Integer.MAX_VALUE。

指定者:

接口 CollectionE 中的大小

返回:

此集合中的元素?cái)?shù)

isEmpty

public boolean isEmpty()

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

此實(shí)現(xiàn)返回 size() == 0。

指定者:

接口 CollectionE 中的 isEmpty

返回:

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

contains

public boolean contains(Object o)

如果此集合包含指定元素,則返回 true。 更正式地說,當(dāng)且僅當(dāng)此集合包含至少一個(gè)元素 e 滿足 (o==null ? e==null : o.equals(e)) 時(shí)才返回 true。

此實(shí)現(xiàn)迭代集合中的元素,依次檢查每個(gè)元素是否與指定元素相等。

指定者:

包含在接口 CollectionE 中

參數(shù):

參數(shù)名稱 參數(shù)描述
o 要測(cè)試其在此集合中的存在的元素

返回:

如果此集合包含指定元素,則為 true

Throws:

Throw名稱 Throw描述
ClassCastException 如果指定元素的類型與此集合不兼容(可選)
NullPointerException 如果指定元素為空且此集合不允許空元素(可選)

toArray

public Object[] toArray()

返回一個(gè)包含此集合中所有元素的數(shù)組。如果此集合對(duì)其迭代器返回其元素的順序做出任何保證,則此方法必須以相同的順序返回元素。

返回的數(shù)組將是“安全的”,因?yàn)榇思喜痪S護(hù)對(duì)它的引用。 (換句話說,即使此集合由數(shù)組支持,此方法也必須分配一個(gè)新數(shù)組)。因此,調(diào)用者可以自由修改返回的數(shù)組。

此方法充當(dāng)基于數(shù)組和基于集合的 API 之間的橋梁。

此實(shí)現(xiàn)返回一個(gè)數(shù)組,其中包含此集合的迭代器返回的所有元素,以相同的順序存儲(chǔ)在數(shù)組的連續(xù)元素中,從索引 0 開始。返回?cái)?shù)組的長(zhǎng)度等于迭代器返回的元素?cái)?shù),即使此集合的大小在迭代期間發(fā)生變化,如果集合允許在迭代期間進(jìn)行并發(fā)修改,也可能發(fā)生這種情況。 size 方法僅作為優(yōu)化提示調(diào)用;即使迭代器返回不同數(shù)量的元素,也會(huì)返回正確的結(jié)果。

該方法等價(jià)于:

 List<E> list = new ArrayList<E>(size());
 for (E e : this)
     list.add(e);
 return list.toArray();

指定者:

接口 CollectionE 中的 toArray

返回:

包含此集合中所有元素的數(shù)組

toArray

public <T> T[] toArray(T[] a)

返回一個(gè)包含此集合中所有元素的數(shù)組;返回?cái)?shù)組的運(yùn)行時(shí)類型是指定數(shù)組的運(yùn)行時(shí)類型。如果集合適合指定的數(shù)組,則在其中返回。否則,將使用指定數(shù)組的運(yùn)行時(shí)類型和此集合的大小分配一個(gè)新數(shù)組。

如果此集合適合指定的數(shù)組并有剩余空間(即,數(shù)組的元素比此集合多),則數(shù)組中緊跟集合末尾的元素設(shè)置為 null。 (僅當(dāng)調(diào)用者知道此集合不包含任何空元素時(shí),這在確定此集合的長(zhǎng)度時(shí)才有用。)

如果此集合對(duì)其迭代器返回其元素的順序做出任何保證,則此方法必須以相同的順序返回元素。

與 Collection.toArray() 方法一樣,此方法充當(dāng)基于數(shù)組的 API 和基于集合的 API 之間的橋梁。此外,此方法允許對(duì)輸出數(shù)組的運(yùn)行時(shí)類型進(jìn)行精確控制,并且在某些情況下可用于節(jié)省分配成本。

假設(shè) x 是一個(gè)已知只包含字符串的集合。以下代碼可用于將集合轉(zhuǎn)儲(chǔ)到新分配的 String 數(shù)組中:

     String[] y = x.toArray(new String[0]);

請(qǐng)注意,toArray(new Object[0]) 在功能上與 toArray() 相同。

此實(shí)現(xiàn)返回一個(gè)數(shù)組,其中包含此集合的迭代器以相同順序返回的所有元素,存儲(chǔ)在數(shù)組的連續(xù)元素中,從索引 0 開始。如果迭代器返回的元素?cái)?shù)量太大而無法放入指定的數(shù)組 ,然后元素在一個(gè)新分配的數(shù)組中返回,其長(zhǎng)度等于迭代器返回的元素?cái)?shù),即使此集合的大小在迭代期間發(fā)生變化,如果集合允許在迭代期間進(jìn)行并發(fā)修改,可能會(huì)發(fā)生這種情況。 size 方法僅作為優(yōu)化提示調(diào)用; 即使迭代器返回不同數(shù)量的元素,也會(huì)返回正確的結(jié)果。

該方法等價(jià)于:

 List<E> list = new ArrayList<E>(size());
 for (E e : this)
     list.add(e);
 return list.toArray(a);

指定者:

接口 CollectionE 中的 toArray

類型參數(shù):

類型參數(shù)名稱 類型參數(shù)描述
T 包含集合的數(shù)組的運(yùn)行時(shí)類型

參數(shù):

參數(shù)名稱 參數(shù)描述
a 這個(gè)集合的元素要存儲(chǔ)到的數(shù)組,如果它足夠大的話; 否則,將為此目的分配相同運(yùn)行時(shí)類型的新數(shù)組。

返回:

包含此集合中所有元素的數(shù)組

Throws:

Throw名稱 Throw描述
ArrayStoreException 如果指定數(shù)組的運(yùn)行時(shí)類型不是此集合中每個(gè)元素的運(yùn)行時(shí)類型的超類型
NullPointerException 如果指定的數(shù)組為空

add

public boolean add(E e)

確保此集合包含指定的元素(可選操作)。如果此集合因調(diào)用而更改,則返回 true。 (如果此集合不允許重復(fù)且已包含指定元素,則返回 false。)

支持此操作的集合可能會(huì)限制可以添加到此集合的元素。特別是,一些集合會(huì)拒絕添加空元素,而另一些則會(huì)對(duì)可能添加的元素類型施加限制。集合類應(yīng)在其文檔中明確指定對(duì)可以添加哪些元素的任何限制。

如果一個(gè)集合拒絕添加一個(gè)特定元素,除了它已經(jīng)包含該元素之外,它必須拋出一個(gè)異常(而不是返回 false)。這保留了在此調(diào)用返回后集合始終包含指定元素的不變量。

此實(shí)現(xiàn)總是拋出 UnsupportedOperationException。

指定者:

添加接口CollectionE

參數(shù):

參數(shù)名稱 參數(shù)描述
e 要確保在此集合中存在的元素

返回:

如果此集合因調(diào)用而更改,則為 true

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此集合不支持添加操作
ClassCastException 如果指定元素的類阻止它被添加到此集合中
NullPointerException 如果指定元素為 null 并且此集合不允許 null 元素
IllegalArgumentException 如果元素的某些屬性阻止它被添加到此集合中
IllegalStateException 如果此時(shí)由于插入限制無法添加元素

remove

public boolean remove(Object o)

從此集合中移除指定元素的單個(gè)實(shí)例(如果存在)(可選操作)。 更正式地說,如果這個(gè)集合包含一個(gè)或多個(gè)這樣的元素,則刪除一個(gè)元素 e 使得 (o==null ? e==null : o.equals(e))。 如果此集合包含指定元素(或等效地,如果此集合因調(diào)用而更改),則返回 true。

此實(shí)現(xiàn)遍歷集合以查找指定元素。 如果找到該元素,則使用迭代器的 remove 方法從集合中刪除該元素。

請(qǐng)注意,如果此集合的迭代器方法返回的迭代器未實(shí)現(xiàn) remove 方法并且此集合包含指定的對(duì)象,則此實(shí)現(xiàn)將引發(fā) UnsupportedOperationException。

指定者:

在接口 CollectionE 中刪除

參數(shù):

參數(shù)名稱 參數(shù)描述
o 要從此集合中刪除的元素(如果存在)

返回:

如果由于此調(diào)用而刪除了元素,則為 true

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此集合不支持刪除操作
ClassCastException 如果指定元素的類型與此集合不兼容(可選)
NullPointerException 如果指定元素為空且此集合不允許空元素(可選)

containsAll

public boolean containsAll(Collection<?> c)

如果此集合包含指定集合中的所有元素,則返回 true。

這個(gè)實(shí)現(xiàn)遍歷指定的集合,依次檢查迭代器返回的每個(gè)元素,看它是否包含在這個(gè)集合中。 如果所有元素都如此包含,則返回 true,否則返回 false。

指定者:

接口 CollectionE 中的 containsAll

參數(shù):

參數(shù)名稱 參數(shù)描述
c 要檢查此集合中包含的集合

返回:

如果此集合包含指定集合中的所有元素,則為 true

Throws:

Throw名稱 Throw描述
ClassCastException 如果指定集合中的一個(gè)或多個(gè)元素的類型與該集合不兼容(可選)
NullPointerException 如果指定的集合包含一個(gè)或多個(gè)空元素并且此集合不允許空元素(可選),或者指定的集合為空。

addAll

public boolean addAll(Collection<? extends E> c)

將指定集合中的所有元素添加到此集合(可選操作)。 如果在操作正在進(jìn)行時(shí)修改了指定的集合,則此操作的行為是未定義的。 (這意味著如果指定的集合是這個(gè)集合,并且這個(gè)集合是非空的,那么這個(gè)調(diào)用的行為是未定義的。)

此實(shí)現(xiàn)遍歷指定的集合,并將迭代器返回的每個(gè)對(duì)象依次添加到此集合中。

請(qǐng)注意,此實(shí)現(xiàn)將拋出 UnsupportedOperationException 除非 add 被覆蓋(假設(shè)指定的集合是非空的)。

指定者:

接口 CollectionE 中的 addAll

參數(shù):

參數(shù)名稱 參數(shù)描述
c 包含要添加到此集合的元素的集合

返回:

如果此集合因調(diào)用而更改,則為 true

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此集合不支持 addAll 操作
ClassCastException 如果指定集合的元素的類阻止將其添加到此集合中
NullPointerException 如果指定的集合包含空元素并且此集合不允許空元素,或者指定的集合為空
IllegalArgumentException 如果指定集合的某個(gè)元素的某些屬性阻止它被添加到此集合中
IllegalStateException 如果由于插入限制,此時(shí)不能添加所有元素

removeAll

public boolean removeAll(Collection<?> c)

移除此集合的所有也包含在指定集合中的元素(可選操作)。 在此調(diào)用返回后,此集合將不包含與指定集合共有的元素。

這個(gè)實(shí)現(xiàn)迭代這個(gè)集合,依次檢查迭代器返回的每個(gè)元素,看看它是否包含在指定的集合中。 如果它如此包含,則使用迭代器的 remove 方法將其從該集合中刪除。

請(qǐng)注意,如果迭代器方法返回的迭代器沒有實(shí)現(xiàn) remove 方法并且此集合包含一個(gè)或多個(gè)與指定集合共有的元素,則此實(shí)現(xiàn)將拋出 UnsupportedOperationException。

指定者:

接口 CollectionE 中的 removeAll

參數(shù):

參數(shù)名稱 參數(shù)描述
c 包含要從此集合中刪除的元素的集合

返回:

如果此集合因調(diào)用而更改,則為 true

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此集合不支持 removeAll 方法
ClassCastException 如果此集合中的一個(gè)或多個(gè)元素的類型與指定的集合不兼容(可選)
NullPointerException if this collection contains one or more null elements and the specified collection does not support null elements (optional), or if the specified collection is null

retainAll

public boolean retainAll(Collection<?> c)

僅保留此集合中包含在指定集合中的元素(可選操作)。 換句話說,從這個(gè)集合中移除所有不包含在指定集合中的元素。

這個(gè)實(shí)現(xiàn)迭代這個(gè)集合,依次檢查迭代器返回的每個(gè)元素,看看它是否包含在指定的集合中。 如果它沒有被包含,它會(huì)使用迭代器的 remove 方法從這個(gè)集合中刪除。

請(qǐng)注意,如果迭代器方法返回的迭代器未實(shí)現(xiàn) remove 方法并且此集合包含指定集合中不存在的一個(gè)或多個(gè)元素,則此實(shí)現(xiàn)將拋出 UnsupportedOperationException。

指定者:

接口CollectionE中的retainAll

參數(shù):

參數(shù)名稱 參數(shù)描述
c 包含要保留在此集合中的元素的集合

返回:

如果此集合因調(diào)用而更改,則為 true

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此集合不支持 retainAll 操作
ClassCastException 如果此集合中的一個(gè)或多個(gè)元素的類型與指定的集合不兼容(可選)
NullPointerException 如果此集合包含一個(gè)或多個(gè)空元素并且指定的集合不允許空元素(可選),或者指定的集合為空

clear

public void clear()

從此集合中移除所有元素(可選操作)。 此方法返回后,集合將為空。

此實(shí)現(xiàn)迭代此集合,使用 Iterator.remove 操作刪除每個(gè)元素。 大多數(shù)實(shí)現(xiàn)可能會(huì)選擇覆蓋此方法以提高效率。

請(qǐng)注意,如果此集合的迭代器方法返回的迭代器未實(shí)現(xiàn) remove 方法并且此集合非空,則此實(shí)現(xiàn)將拋出 UnsupportedOperationException。

指定者:

在界面 CollectionE 中清除

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此集合不支持清除操作

toString

public String toString()

返回此集合的字符串表示形式。 字符串表示由集合元素的列表組成,按其迭代器返回的順序排列,用方括號(hào) ("[]") 括起來。 相鄰元素由字符“、”(逗號(hào)和空格)分隔。 通過 String#valueOf(Object) 將元素轉(zhuǎn)換為字符串。

覆蓋:

類 Object 中的 toString

返回:

此集合的字符串表示形式

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)