https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html
public interface Collection<E> extends Iterable<E>
E,代表這個集合中的元素類型。
父接口:Iterable<E>
子接口:BeanContext, BeanContextServices, BlockingDeque<E>, BlockingQueue<E>, Deque<E>, List<E>, NavigableSet<E>, Queue<E>, Set<E>, SortedSet<E>, TransferQueue<E>
一、簡介
Collection<E>是Java集合框架的一個根接口(另一個是Map)。
JDK並不提供此接口的任何直接實現(類),而是提供了Collection接口的一些子接口的實現,如Set接口和List接口。所以這個接口通常用來在需要最大通用性的地方傳遞集合並對其進行操作。
Bags or multisets(可能包含重復元素的無序集合),應該直接實現這個接口。
所有一般用途的Collection實現(類) (通常是通過Collection接口的子接口間接實現),都應該提供兩個標准構造函數:
- 第一個,一個無參構造函數,用來創建一個空的集合
- 第二個,一個有單個Collection類型的參數的構造函數,用來創建一個新集合,包含和它的參數類型一致的元素。
實際上,第二種構造函數允許用戶復制任何集合,來生成所需實現類型的等效集合。當然你也沒法強制執行這個規約,因為接口不包含構造函數,但Java平台庫中的所有通常用途的Collection實現(類)都遵守這個規約。
此接口中的 "破壞性 " 方法 (即修改它們所操作的集合的方法) 被指定為在該集合不支持該操作時拋出 UnsupportedOperationException異常。但如果方法的調用對集合沒有影響,則這些方法可能(但不是一定)拋出UnsupportedOperationException。例如, 如果要添加的集合為空, 則在不可修改集合上調用 addAll (Collection) 方法可能 (但不是一定) 引發異常。
某些集合實現對它們可能包含的元素有限制。例如, 某些實現禁止空元素, 有些則對其元素的類型有限制。
嘗試添加不合格的元素會引發未檢查的異常, 通常為 NullPointerException or ClassCastException。
嘗試查詢不合格元素的存在可能引發異常, 也可能只是返回 false。一些實現將展示前者的行為, 有些將展示后者。
通常,嘗試對不合格元素進行操作可能會成功,也可能引發異常。但是其完成不會導致將不合格的元素插入到集合中
每種集合可以自定義它的同步策略。
在沒有實現類的強保證下,調用一個正在被其它線程(占用)修改的集合中的方法可能導致未知的行為,這包括直接調用、將集合傳遞給可能執行調用的方法以及使用現有迭代器檢查集合。
集合框架接口中的許多方法是根據equals方法定義的。例如,contains(Object o)方法的規范指出“當且僅當這個集合包含至少一個這樣的e元素時(o==null?e==null:o.equals(e)),返回true”。這條規范不應被解釋為它表明使用非空參數o調用Collection.contains()方法時,將導致操作o.equals(e)對每個元素e都進行(有至少一個就行了)。
實現類則可以自由地進行優化,從而避免調用equals方法。例如,比較兩個元素(對象)的hashcode(兩個hashcode不相等的object,我們定義為不相等)。
更普遍地,集合框架中不同接口的實現類可以自由地在合適的地方利用Object抽象類中指定的方法。
對集合執行遞歸遍歷的某些集合操作可能會因為該集合直接或者間接包含自身引用的實例而失敗,也會有一個異常提示這種情況。
默認的方法實現(如通過繼承獲得)不適用與任何的同步協議,如果一個集合實現類有一個特定的同步協議,那么它必須重寫這些默認的方法,以可以適配相應的同步協議。
二、接口方法
1、int size()
2、boolean isEmpty()
3、boolean contains(Object o)
4、Iterator<E> iterator()
5、Object[] toArray()
6、<T> T[] toArray(T[] a)
7、boolean add(E e)
8、boolean remove(Object o)
9、boolean containsAll(Collection<?> c)
10、boolean addAll(Collection<? extends E> c)
11、boolean removeAll(Collection<?> c)
12、default boolean removeIf(Predicate<? super E> filter)
13、boolean retainAll(Collection<?> c)
14、void clear()
15、boolean equals(Object o)
16、int hashCode()
17、default Spliterator<E> spliterator()
18、default Stream<E> stream()
19、default Stream<E> parallelStream()