W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
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ù) | 描述 |
---|---|---|
protected | AbstractCollection() | 唯一的構(gòu)造函數(shù)。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
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 |
protected AbstractCollection()
唯一的構(gòu)造函數(shù)。 (用于子類構(gòu)造函數(shù)的調(diào)用,通常是隱式的。)
public abstract IteratorE iterator()
返回此集合中包含的元素的迭代器。
指定者:
接口 CollectionE 中的迭代器
指定者:
接口 IterableE 中的迭代器
返回:
此集合中包含的元素的迭代器
public abstract int size()
從接口復(fù)制的描述:集合
返回此集合中的元素?cái)?shù)。 如果此集合包含多個(gè) Integer.MAX_VALUE 元素,則返回 Integer.MAX_VALUE。
指定者:
接口 CollectionE 中的大小
返回:
此集合中的元素?cái)?shù)
public boolean isEmpty()
如果此集合不包含任何元素,則返回 true。
此實(shí)現(xiàn)返回 size() == 0。
指定者:
接口 CollectionE 中的 isEmpty
返回:
如果此集合不包含任何元素,則為 true
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 | 如果指定元素為空且此集合不允許空元素(可選) |
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ù)組
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ù)組為空 |
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í)由于插入限制無法添加元素 |
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 | 如果指定元素為空且此集合不允許空元素(可選) |
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è)空元素并且此集合不允許空元素(可選),或者指定的集合為空。 |
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í)不能添加所有元素 |
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 |
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è)空元素并且指定的集合不允許空元素(可選),或者指定的集合為空 |
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 | 如果此集合不支持清除操作 |
public String toString()
返回此集合的字符串表示形式。 字符串表示由集合元素的列表組成,按其迭代器返回的順序排列,用方括號(hào) ("[]") 括起來。 相鄰元素由字符“、”(逗號(hào)和空格)分隔。 通過 String#valueOf(Object) 將元素轉(zhuǎn)換為字符串。
覆蓋:
類 Object 中的 toString
返回:
此集合的字符串表示形式
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)系方式:
更多建議: