一、Java集合框架框圖
對於Java集合框架,在具體介紹某一類之前,先對其做一個整體的概述,以確保對其整體把握。已達到對Java集合框架的整體把握。廢話不多說,先上一張Java集合框架的框圖(不包含併發,有關併發後續再整理)。
對上圖做幾點簡要說明:藍顏色表示抽象類
- 主要包含三個頂層接口分別是 Map、Collection以及Iterator。
- Map接口的實現類包含了HashMap、Hashtable、TreeMap以及WeakHashMap。抽象類AbstractMap實現了Map的大部分API。
- Collection接口下有三個繼承接口List、Set、Queue。
- Set接口的實現類主要是TreeSet 和hashSet。
- List接口的實現類主要是ArrayList、LinkedList,還有Vector,常用棧和隊列。
- Queue以及繼承它的Dueue分別表示隊列和雙端隊列,主要實現類是LinkedList。相比於List和Set接口,Queue更傾向於是存儲數據而並非處理數據。
- Iterotor,迭代器是用來遍歷並選擇序列中的對象,而不必關心元素的數量,只要交給hasNext()和next()方法就可以了,但是隻能單向移動。ListIterator是一個更強大的Iterator的子類型,只能用於List類的訪問,可以雙向移動。
- Enumeration接口比Iterotor小。下面再講
二、接口說明
1、Map接口
將對象映射到其他對象的能力是一種解決編程問題的殺手鐗,而Map就是解決此類問題的有力工具,表示了兩個對象之間的映射關係,存放的是鍵——值對,可以通過鍵來查找對應的值,因此鍵必須是唯一的不允許重複,但不同的鍵可以對應不同的值。
2、Collection接口
Collection中存放的都是“單個”數據,這是相對於Map中存放的鍵-—值對而言。下圖表示了可以通多Collection執行的所有操作,包括基本屬性,紅色箭頭表示繼承自Object和Iterator的方法。注意:其中不包含隨機訪問所選擇元素的get()方法,因爲Collection包括Set,而Set是自己維護內部順序的,因此如果想檢查Collection中的元素,那就必須使用迭代器。
AbstractCollection實現了Collection中的除Size()和iterator()以外的大部分方法。
3、Iterator接口
Iterotor,迭代器是用來遍歷並選擇序列中的對象,而不必關心元素的數量,只要交給hasNext()和next()方法就可以了,但是隻能單向移動。ListIterator是一個更強大的Iterator的子類型,只能用於List類的訪問,可以雙向移動。
4、Enumeration接口
Enumeration接口比Iterator小,只有兩個名字很長的方法,一個爲hasMoreElements()和nextElement()。在代碼中應該儘量使用Iterator,但是有時類庫也會返回一個Enumeration。