簡介
public abstract class AbstractCollection<E>extends Objectimplements Collection<E>此類提供了 Collection 接口的骨幹實現,從而最大限度地減少了實現此接口所需的工作。
要實現一個不可修改的 collection,程式設計師只需擴展此類,並提供 iterator 和 size 方法的實現。(iterator 方法返回的
疊代器必須實現 hasNext 和 next。)
要實現可修改的 collection,程式設計師還必須另外重寫此類的 add 方法(否則,會拋出 UnsupportedOperationException),並且 iterator 方法返回的
疊代器必須另外實現其 remove 方法。
按照 Collection 接口規範中的推薦,程式設計師通常應該提供一個 void (無參數)和 Collection
構造方法。
此類中每個非抽象方法的文檔詳細描述了其實現。如果要實現的 collection 允許更有效的實現,則可以重寫這些方法中的每個方法。
此類是 Java Collections Framework 的成員。
構造方法
protected AbstractCollection()
方法摘要
boolean add(E o)
確保此 collection 包含指定的
元素(可選操作)。
boolean addAll(Collection<? extends E> c)
將指定collection 中的所有
元素添加到此 collection 中(可選操作)。
void clear()
從此 collection 中移除所有
元素(可選操作)。
boolean contains(Object o)
如果此 collection 包含指定的
元素,則返回 true。
boolean containsAll(Collection<?> c)
如果此 collection 包含指定 collection 中的所有
元素,則返回 true。
boolean isEmpty()
如果此 collection 不包含
元素,則返回 true。
abstract Iterator<E> iterator()
返回在此 collection 中的
元素上進行疊代的
疊代器。
boolean remove(Object o)
從此 collection 中移除指定
元素的單個實例(如果存在)(可選操作)。
boolean removeAll(Collection<?> c)
從此collection中移除包含在指定 collection 中的所有
元素(可選操作)。
boolean retainAll(Collection<?> c)
僅在此collection中保留指定 collection 中所包含的
元素(可選操作)。
abstract int size()
Object[] toArray()
返回包含此 collection 中所有
元素的
數組。
<T> T[]
toArray(T[] a)
返回包含此collection 中所有
元素的
數組;返回
數組的運行時類型是指定
數組的類型。
String toString()
返回此 collection 的字元串表示形式。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
從接口 java.util.Collection 繼承的方法
equals, hashCode
構造方法詳細信息
AbstractCollection
protected AbstractCollection()單獨的
構造方法。(由子類
構造方法調用,通常是隱式的。)
方法詳細信息
iterator
public abstract Iterator<E> iterator()返回在此 collection 中的
元素上進行疊代的
疊代器。
指定者
指定者:接口 Iterable<E> 中的 iterator
指定者:
接口 Collection<E> 中的 iterator
返回:
在此 collection 中的元素上進行疊代的疊代器。
size
public abstract int size()返回此 collection 中的元素數。如果該 collection 包含多於 Integer.MAX_VALUE 的
元素,則返回 Integer.MAX_VALUE。
指定者:接口 Collection<E> 中的 size
返回:
此 collection 中的元素數。
isEmpty
public boolean isEmpty()如果此 collection 不包含元素,則返回 true。
此實現返回 size() == 0。
指定者:
接口 Collection<E> 中的 isEmpty
返回:
如果此 collection 不包含元素,則返回 true。
contains
public boolean contains(Object o)如果此 collection 包含指定的元素,則返回 true。更正式地說,若且唯若此 collection 至少包含一個滿足以下條件的
元素e 時才返回 true:(o==null ? e==null : o.equals(e))。
此實現疊代該 collection 中的
元素,並依次檢查每個元素以確定其是否與指定的元素相等。
指定者:接口 Collection<E> 中的 contains
參數:
o - 要檢查的對象,以確定其是否包含在此 collection 中。
返回:
如果此 collection 包含指定的
元素,則返回 true。
toArray
public Object[] toArray()返回包含此 collection 中所有元素的數組。返回的數組將是“安全的”,因為此 collection 並不維護對返回數組的任何引用。(換句話說,即使 collection 受到
數組的支持,此方法也必須分配一個新的數組)。因此,調用方可以隨意修改返回的數組。
此實現會分配返回的
數組,并迭代 collection 中的
元素,將每個
對象引用存儲在
數組的下一個連續
元素中,並從元素 0 開始。
指定者:接口 Collection<E> 中的 toArray
返回:
toArray
public <T> T[] toArray(T[] a)返回包含此collection 中所有元素的數組;返回數組的運行時類型是指定數組的類型。如果指定的
數組能容納該 collection,則在此數組中返回 collection 的
元素。否則,將根據指定
數組的運行時類型和此 collection 的大小分配一個新數組。
如果指定的數組能容納 collection,並且有剩餘的空間(即數組的
元素比 collection 多),那么會將緊挨著 collection 尾部的元素設定為 null(這對確定 collection 的長度很有用,但只有 在調用方知道 collection 不包含任何 null 元素時才可行)。
此實現會檢查該數組是否足夠大,以包含該 collection 中的
元素;如果不能包含,則將分配一個具有適當大小和類型的新數組(使用反射)。然後,在該 collection 上進行疊代,將每個對象引用存儲在數組的下一個連續元素中,並從元素 0 開始。如果該數組比該 collection 大,則在該 collection 尾部後面的第一個位置存儲 null。
指定者:接口 Collection<E> 中的 toArray
參數:
a - 存儲此 collection 的
元素的
數組(如果其足夠大);否則,將為此分配一個具有相同運行時類型的新數組。
返回:
拋出:
NullPointerException - 如果指定的數組為 null。
add
public boolean add(E o)確保此 collection 包含指定的
元素(可選操作)。(如果此 collection 不允許有重複
元素,並且已經包含了指定的元素,則返回 false。)支持此操作的 collection 可能限制哪些
元素能添加到此 collection 中來。需要特別指出的是,某些 collection 拒絕添加 null
元素,其他一些 collection 則對可以添加的元素類型強加限制。Collection 類應該在其文檔中清楚地指定添加
元素方面的所有限制。
此實現始終拋出 UnsupportedOperationException。
指定者:接口 Collection<E> 中的 add
參數:
o - 確保存在於此 collection 中的元素。
返回:
拋出:
UnsupportedOperationException - 如果此 collection 不支持 add 方法。
NullPointerException - 如果此 collection 不允許 null
元素,並且指定的元素為 null。
ClassCastException - 如果指定
元素的類不允許該元素添加到此 collection 中。
IllegalArgumentException - 如果此
元素的某方面不允許它添加到此 collection 中。
remove
public boolean remove(Object o)從此 collection 中移除指定元素的單個實例(如果存在)(可選操作)。更正式地說,如果該 collection 包含一個或多個滿足 (o==null ? e==null : o.equals(e)) 的
元素e,則移除 e。如果該 collection 包含指定的
元素(或等價元素,如果該 collection 由於此方法的調用發生變化),則返回 true。
此實現在該 collection 上進行疊代,查找指定的
元素。如果找到該
元素,那么它會使用
疊代器的 remove 方法從該 collection 中移除該元素。
注意,如果此 collection 的 iterator 方法所返回的
疊代器無法實現 remove 方法,並且此 collection包含指定的對象,那么此實現會拋出 UnsupportedOperationException。
指定者:接口 Collection<E> 中的 remove
參數:
o - 要從此 collection 中移除的
元素(如果存在)。
返回:
如果該 collection 包含指定的
元素,則返回 true。
拋出:
UnsupportedOperationException - 如果此 collection 不支持 remove 方法。
containsAll
public boolean containsAll(Collection<?> c)如果此 collection 包含指定 collection 中的所有元素,則返回 true。
此實現在指定的 collection 上進行疊代,依次檢查該
疊代器返回的每個
元素,查看其是否包含在此 collection 中。如果包含所有
元素,則返回 true;否則將返回 false。
指定者:接口 Collection<E> containsAll
參數:
c - 將檢查其是否包含在此 collection 中的 collection。
返回:
如果此 collection 包含指定 collection 中的所有元素,則返回 true。
拋出:
另請參見:
contains(Object)
addAll
public boolean addAll(Collection<? extends E> c)將指定collection 中的所有元素添加到此 collection 中(可選操作)。如果在該操作進行過程中修改了指定的 collection,那么此操作的行為是不明確的。(這意味著,如果指定的 collection 是此 collection,並且此 collection 非空,則此調用的行為是不明確的。)
此實現在指定的 collection 上進行疊代,並依次將
疊代器返回的每個對象添加到此 collection 中。
注意,除非重寫 add,否則此實現將拋出 UnsupportedOperationException(假定指定的 collection 非空)。
指定者:接口 Collection<E> 中的 addAll
參數:
c - 將其
元素添加到此 collection 的 collection。
返回:
拋出:
UnsupportedOperationException - 如果此 collection 不支持 addAll 方法。
另請參見:
add(Object)
removeAll
public boolean removeAll(Collection<?> c)從此collection中移除包含在指定 collection 中的所有
元素(可選操作)。
此實現在此 collection 上進行疊代,依次檢查該
疊代器返回的每個
元素,以查看其是否包含在指定的 collection 中。如果是,則使用
疊代器的 remove 方法將其從此 collection 中移除。
指定者: Collection<E> removeAll
參數:
c - 要從此 collection 移除的
元素。
返回:
如果此 collection 由於此方法的調用而發生改變,則返回 true。
拋出:
UnsupportedOperationException - 如果此 collection 不支持 removeAll 方法。
另請參見:
remove(Object), contains(Object)
retainAll
指定者:Collection<E> retainAll
參數:
c - 將保留在此 collection 的元素。
返回:
拋出:
UnsupportedOperationException - 如果此 collection 不支持 retainAll 方法。
另請參見:
remove(Object), contains(Object)
clear
public void clear()從此 collection 中移除所有元素(可選操作)。此調用返回後,該 collection 將為空(除非它拋出異常)。
此實現在此 collection 上進行疊代,並使用 Iterator.remove 操作移除每個
元素。為了提高效率,多數實現可能會選擇重寫此方法。
指定者:接口 Collection<E> 中的 clear
拋出:
UnsupportedOperationException - 如果此 collection 不支持 clear 方法。
toString
public String toString()返回此 collection 的字元串表示形式。該字元串表示形式由 collection
元素的列表組成,這些元素按其
疊代器返回的順序排列,並用方括弧 ("[]") 括起來。相鄰
元素由字元 ", "(逗號加空格)分隔。通過 String.valueOf(Object) 可以將
元素轉換成字元串。
此實現會創建一個
空字元串緩衝區,追加一個左方括弧,然後在 collection 上進行疊代,依次追加每個
元素的字元串表示形式。每追加一個
元素後(最後一個元素除外),將追加字元串 ", "。最後,追加一個右括弧。從字元串緩衝區獲取一個字元串並返回它。
覆蓋:
類 Object 中的 toString
返回:
此 collection 的字元串表示形式。