1. 程式人生 > >java原始碼閱讀介面篇之java.util.Collection

java原始碼閱讀介面篇之java.util.Collection

java.util.Collection是個介面,很容易和工具類java.util.Collections弄混淆。今天我就抽絲剝繭來研究一下這個介面。

這裡我基於JDK1.7.0_80的Collections介面進行研究,以避免JDK1.8引入的StreamAPI和函數語言程式設計介面。

一、介面定義:

public interface Collection<E> extends Iterable<E> {

Collection是繼承自Iterable介面的,並且是V值集合結構,非K-V值集合。關於Iterable介面,我另有文章介紹。這裡先不做說明:

值得注意的是,這個介面是JDK1.2版本才開始出現的。

二、接口裡規定的方法:

1、集合大小

int size();

2、判斷集合是否為空:

boolean isEmpty();

其實這個方法,在日常使用中經常被第一個方法size()掩蓋住了光芒。我見過很多人都是呼叫size() == 0來進行判斷。

3、迭代器模式的體現,當然這個也是繼承自Iterable而來的。

Iterator<E> iterator();

注意Iterable介面是在java.lang包下面的。

4、介面卡模式的體現:

Object[] toArray();
 <T> T[] toArray(T[] a);

5、增刪查大家族:(沒有改)

(1)增:

//增加一個
boolean add(E e);
//增加多個
boolean addAll(Collection<? extends E> c);

(2)刪:

//刪一個
boolean remove(Object o);
//刪多個
boolean removeAll(Collection<?> c);
//全刪掉
void clear();

(3)查:

//查一個
boolean contains(Object o);
//查多個,要求都在
boolean containsAll(Collection<?> c);

6、集合比較:

boolean equals(Object o);

7、hash值計算:

 int hashCode();