java原始碼閱讀介面篇之java.util.Collection
阿新 • • 發佈:2019-02-14
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();