在Java類庫中,集合類的基本接口是Collection接口。
Collection 表示一組對象,這些對象也稱爲 Collection 的元素。一些 Collection 允許有重複的元素,而另一些則不允許。一些collection 是有序的,而另一些則是無序的。JDK 不提供此接口的任何直接實現:它提供更具體的子接口(如 Queue、Set 和 List)實現。此接口通常用來傳遞 Collection,並在需要最大普遍性的地方操作這些 Collection。
由具體的 Collection類 來確定其自身的同步策略。在沒有實現的情況下,調用由另一進程正在更改的 Collection 的方法可能會出現不確定行爲,這包括直接調用、將 collection 傳遞給可能執行調用的方法以及使用現有迭代器檢查 collection。
public interface Collection<E>
extends Iterable<E>
Collection繼承自java.lang.Iterable接口,實現Iterable接口的對象能成爲foreach語句的目標,不用下標就可以遍歷對象裏的元素。
java.lang.Iterable接口只有一個方法: Iterator<T> iterator( ) 能返回一個在一組T類型的元素上進行迭代的迭代器。
java.util.Iterator接口是一個對 Collection 進行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器與枚舉有兩點不同:
- 迭代器允許調用者利用定義良好的語義在迭代期間從迭代器所指向的 collection 移除元素。
- 方法名稱得到了改進。
boolean hasNext( ) | 如果仍有元素可以迭代,則返回 true。 |
E next( ) | 返回迭代的下一個元素。 |
void remove( ) | 從迭代器指向的 Collection 中移除迭代器返回的最後一個元素(可選操作)。 每次調用 next 只能調用一次此方法。 |
-------------------------------------------集合框架的接口---------------------------------------------
-------------------------------------------------集合框架中的具體類----------------------------------------------
----------------------------------------------Collection接口中的方法---------------------------------
int size( ) | 返回此 collection 中的元素數。 |
boolean isEmpty( ) | 如果此 collection 不包含元素,則返回 true |
void clear( ) | 移除此 collection 中的所有元素。 |
Iterator<E> iterator( ) | 返回在此 collection 的元素上進行迭代的迭代器。 關於元素返回的順序沒有任何保證(除非此 collection 是某個能提供保證順序的類實例)。 |
Object[ ] toArray( ) | 返回包含此 collection 中所有元素的數組。 如果 collection 對其迭代器返回的元素順序做出了某些保證,那麼此方法必須以相同的順序返回這些元素。 返回的數組將是“安全的”,因爲此 collection 並不維護對返回數組的任何引用。調用者可以隨意修改返回的數組。此方法充當了基於數組的 API 與基於 collection 的 API 之間的橋樑。 |
<T> T[ ] toArray(T[ ] a) | 返回包含此 collection 中所有元素的數組; 如果指定的數組能容納該 collection,則返回包含此 collection 元素的數組。否則,將分配一個具有此 collection 大小的新數組。 如果指定的數組能容納 collection,並有剩餘空間,那麼會將數組中緊接 collection 尾部的元素設置爲 null。(只有 在調用者知道此 collection 沒有包含任何 null 元素時才能用此方法確定 collection 的長度。)如果此 collection 對其迭代器返回的元素順序做出了某些保證,那麼此方法必須以相同的順序返回這些元素。 |
boolean add(E e) | 如果此 collection 的內容由於調用add方法而發生更改,則返回 true。(如果此 collection 不允許有重複元素,並且已經包含了指定的元素,則返回 false。) 支持此操作的 collection 可以限制哪些元素能添加到此 collection 中來。 |
boolean addAll(Collection<? extends E> c) | 將指定 collection 中的所有元素都添加到此 collection 中。 |
boolean remove(Object o) | 從此 collection 中移除指定元素的單個實例。 更確切地講,如果此 collection 包含一個或多個滿足 (o==null ? e==null : o.equals(e)) 的元素 e,則移除這樣的元素。 如果此 collection 包含指定的元素(或者此 collection 由於調用而發生更改),則返回 true 。 |
boolean removeAll(Collection<?> c) | 移除此 collection 中那些也包含在指定 collection 中的所有元素。此調用返回後,collection 中將不包含任何與指定 collection 相同的元素。 |
boolean contains(Object o) | 如果此 collection 包含指定的元素,則返回 true。 更確切地講,當且僅當此 collection 至少包含一個滿足 (o==null ? e==null : o.equals(e)) 的元素 e 時,返回 true。 |
boolean containsAll(Collection<?> c) | 如果此 collection 包含指定 collection 中的所有元素,則返回 true。 |
boolean retainAll(Collection<?> c) | 僅保留此 collection 中那些也包含在指定 collection 的元素。 換句話說,移除此 collection 中未包含在指定 collection 中的所有元素。 |
boolean equals(Object o) | 比較此 collection 與指定對象是否相等。 Object.equals 方法的常規協定聲稱相等必須是對稱的(換句話說,當且僅當存在 b.equals(a) 時,才存在 a.equals(b))。 List.equals 和 Set.equals 的協定聲稱列表只能與列表相等,set 只能與 set 相等。 |
int hashCode( ) | 返回此 collection 的哈希碼值。 |