|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.AbstractCollection<E>
public abstract class AbstractCollection<E>
此類別提供 Collection 介面的骨幹實作,以最大限度地減少了實作此介面所需的工作。
要實作一個不可修改的 collection,程式人員只需擴展此類別,並提供 iterator 和 size 方法的實作。(iterator 方法返回的迭代器必須實作 hasNext 和 next。)
要實作可修改的 collection,程式人員必須另外覆寫此類別的 add 方法(否則,會拋出 UnsupportedOperationException),iterator 方法返回的迭代器還必須另外實作其 remove 方法。
按照 Collection 介面規範中的建議,程式人員通常應提供一個 void (無參數)和 Collection 建構子。
此類別中每個非抽象方法的文檔詳細描述了其實作。如果要實作的 collection 允許更有效的實作,則可以覆寫這些方法中的每個方法。
此類別是 Java Collections Framework 的成員。
Collection
建構子摘要 | |
---|---|
protected |
AbstractCollection()
唯一的建構子。 |
方法摘要 | ||
---|---|---|
boolean |
add(E e)
確保此 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()
返回此 collection 中的元素數。 |
|
Object[] |
toArray()
返回包含此 collection 中所有元素的陣列。 |
|
|
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 |
建構子詳細資訊 |
---|
protected AbstractCollection()
方法詳細資訊 |
---|
public abstract Iterator<E> iterator()
Iterable<E>
中的 iterator
Collection<E>
中的 iterator
public abstract int size()
Collection
複製的描述
Collection<E>
中的 size
public boolean isEmpty()
此實作返回 size() == 0。
Collection<E>
中的 isEmpty
public boolean contains(Object o)
此實作在 collection 中的元素上進行迭代,並依次檢查每個元素以確定其是否與指定的元素相等。
Collection<E>
中的 contains
o
- 測試在此 collection 中是否存在的元素。
ClassCastException
- 如果指定元素的型別與此 collection 不相容(可選)。
NullPointerException
- 如果指定的元素為 null,並且此 collection 不允許 null 元素(可選)。public Object[] toArray()
返回的陣列將是「安全的」,因為此 collection 並不維護對返回陣列的任何參考。(換句話說,即使 collection 受到陣列的支持,此方法也必須分派一個新的陣列)。因此,調用者可以隨意修改返回的陣列。
此方法充當了基於陣列的 API 與基於 collection 的 API 之間的橋樑。
此實作返回一個陣列,它包含此 collection 的迭代器返回的所有元素,這些元素的排列順序與陣列的連續元素存儲順序相同,都是從索引 0
開始。返回陣列的長度等於迭代器返回的元素數,即使此 collection 的大小發生更改也是如此,這種情況可能發生在 collection 允許在迭代期間進行共時修改時。size
方法只是作為一個優化提示被調用;即使迭代器返回不同的元素數,也會返回正確的結果。
此方法等效於:
List<E> list = new ArrayList<E>(size());
for (E e : this)
list.add(e);
return list.toArray();
Collection<E>
中的 toArray
public <T> T[] toArray(T[] a)
如果指定的陣列能容納 collection,並有剩餘空間(即陣列的元素比 collection 的元素多),那麼會將陣列中緊接 collection 尾部的元素設置為 null。(只有 在調用者知道此 collection 沒有包含任何 null 元素時才能用此方法確定 collection 的長度。)
如果此 collection 對其迭代器返回的元素順序做出了某些保證,那麼此方法必須以相同的順序返回這些元素。
像 Collection.toArray()
方法一樣,此方法充當基於陣列的 API 與基於 collection 的 API 之間的橋樑。更進一步說,此方法允許對輸出陣列的運行時型別進行精確控制,並且在某些情況下,可以用來節省分派開銷。
假定 x 是只包含字元串的一個已知 collection。以下程式碼用來將 collection 轉儲到一個新分派的 String 陣列:
String[] y = x.toArray(new String[0]);注意,toArray(new Object[0]) 和 toArray() 在功能上是相同的。
此實作返回一個陣列,它包含此 collection 的迭代器返回的所有元素,這些元素的排列順序與陣列的連續元素存儲順序相同,都是從索引 0
開始。如果迭代器返回的元素數太大,不適合指定陣列,則在新分派的陣列中返回這些元素,該陣列的長度等於迭代器返回的元素數,即使此 collection 的大小在進行迭代期間發生更改也是如此,這種情況可能發生在 collection 允許在迭代期間進行共時修改時。size
方法只是作為一個優化提示被調用;即使迭代器返回不同的元素數,也會返回正確的結果。
此方法等效於:
List<E> list = new ArrayList<E>(size());
for (E e : this)
list.add(e);
return list.toArray(a);
Collection<E>
中的 toArray
a
- 存儲此 collection 元素的陣列(如果其足夠大);否則,將為此分派一個具有相同運行時型別的新陣列。
ArrayStoreException
- 如果指定陣列的運行時型別不是此 collection 每個元素運行時型別的父級類別型
NullPointerException
- 如果指定的陣列為 nullpublic boolean add(E e)
支持此操作的 collection 可以限制哪些元素能添加到此 collection 中來。需要特別指出的是,一些 collection 拒絕添加 null 元素,其他一些 collection 將對可以添加的元素型別強加限制。Collection 類別應該在其文檔中清楚地指定能添加哪些元素方面的所有限制。
如果 collection 由於某些原因(已經包含該元素的原因除外)拒絕添加特定的元素,那麼它必須 拋出一個異常(而不是返回 false)。這確保了在此調用返回後,collection 總是包含指定的元素。
此實作總是拋出一個 UnsupportedOperationException。
Collection<E>
中的 add
e
- 確定此 collection 中是否存在的元素。
UnsupportedOperationException
- 如果此 collection 不支持 add 操作
ClassCastException
- 如果指定元素的類別不允許它添加到此 collection 中
NullPointerException
- 如果指定的元素為 null,並且此 collection 不允許 null 元素
IllegalArgumentException
- 如果元素的某屬性不允許它添加到此 collection 中
IllegalStateException
- 如果由於插入限制,元素不能在此時間添加public boolean remove(Object o)
此實作在該 collection 上進行迭代,尋找指定的元素。如果找到該元素,那麼它會使用迭代器的 remove 方法從該 collection 中移除該元素。
注意,如果此 collection 的 iterator 方法所返回的迭代器無法實作 remove 方法,並且此 collection 套件含指定的物件,那麼此實作將拋出 UnsupportedOperationException。
Collection<E>
中的 remove
o
- 要從此 collection 中移除的元素(如果存在)。
UnsupportedOperationException
- 如果此 collection 不支持 remove 操作
ClassCastException
- 如果指定元素的型別與此 collection 不相容(可選)
NullPointerException
- 如果指定的元素為 null,並且此 collection 不允許 null 元素(可選)。public boolean containsAll(Collection<?> c)
此實作在指定的 collection 上進行迭代,依次檢查該迭代器返回的每個元素,查看其是否包含在此 collection 中。如果是,則返回 true;否則返回 false。
Collection<E>
中的 containsAll
c
- 將檢查是否包含在此 collection 中的 collection
ClassCastException
- 如果指定 collection 中有一個或多個元素的型別與此 collection 不相容(可選)
NullPointerException
- 如果指定 collection 套件含一個或多個 null 元素,並且此 collection 不允許 null 元素(可選),或者指定的 collection 為 nullcontains(Object)
public boolean addAll(Collection<? extends E> c)
此實作在指定的 collection 上進行迭代,並依次將迭代器返回的每個物件添加到此 collection 中。
注意,除非覆寫 add,否則此實作將拋出 UnsupportedOperationException(假定指定的 collection 非空(null))。
Collection<E>
中的 addAll
c
- 套件含要添加到此 collection 的元素的 collection
UnsupportedOperationException
- 如果此 collection 不支持 addAll 方法
ClassCastException
- 如果指定 collection 中某個元素的類別不允許它添加到此 collection 中
NullPointerException
- 如果指定 collection 套件含 null 元素,並且此 collection 不支持 null 元素,或者指定的 collection 為 null
IllegalArgumentException
- 如果指定 collection 的元素的某屬性不允許它添加到此 collection 中
IllegalStateException
- 如果由於插入限制,不是所有的元素都能在此時間添加add(Object)
public boolean removeAll(Collection<?> c)
此實作在此 collection 上進行迭代,依次檢查該迭代器返回的每個元素,以查看其是否包含在指定的 collection 中。如果是,則使用迭代器的 remove 方法將其從此 collection 中移除。
注意,如果 iterator 方法返回的迭代器無法實作 remove 方法,並且此 collection 套件含一個或多個與指定 collection 共有的元素,那麼此實作將拋出 UnsupportedOperationException。
Collection<E>
中的 removeAll
c
- 辦好要從此 collection 移除的元素的 collection
UnsupportedOperationException
- 如果此 collection 不支持 removeAll 方法
ClassCastException
- 如果此 collection 中一個或多個元素的型別與指定 collection 不相容(可選)
NullPointerException
- 如果此 collection 套件含一個或多個 null 元素,並且指定的 collection 不支持 null 元素(可選),或者指定的 collection 為 nullremove(Object)
,
contains(Object)
public boolean retainAll(Collection<?> c)
此實作在此 collection 上進行迭代,依次檢查該迭代器返回的每個元素,以查看其是否包含在指定的 collection 中。如果不是,則使用迭代器的 remove 方法將其從此 collection 中移除。
注意,如果 iterator 方法返回的迭代器無法實作 remove 方法,並且此 collection 套件含一個或多個在指定 collection 中不存在的元素,那麼此實作將拋出 UnsupportedOperationException。
Collection<E>
中的 retainAll
c
- 套件含保留在此 collection 中的元素的 collection
UnsupportedOperationException
- 如果此 collection 不支持 retainAll 操作
ClassCastException
- 如果此 collection 中一個或多個元素的型別與指定 collection 不相容(可選)
NullPointerException
- 如果此 collection 套件含一個或多個 null 元素,並且指定的 collection 不允許 null 元素(可選),或者指定的 collection 為 nullremove(Object)
,
contains(Object)
public void clear()
此實作在此 collection 上進行迭代,並使用 Iterator.remove 操作移除每個元素。為了提高效率,多數實作可能會選擇覆寫此方法。
注意,如果此 collection 的 iterator 方法所返回的迭代器無法實作 remove 方法,並且此 collection 非空(null),那麼此實作將拋出 UnsupportedOperationException。
Collection<E>
中的 clear
UnsupportedOperationException
- 如果此 collection 不支持 clear 操作public String toString()
String.valueOf(Object)
可以將元素轉換成字元串。
Object
中的 toString
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。