集合(Collections)
以往要將原生資料或物件放入陣列中,陣列的長度需先宣告,一宣告就不能變更長度。若事先不知道長度或者要隨時可以變更長度,就必需使用集合。可以把集合想成是多啦A夢的百寶袋,要裝多少物件都可以,只要記憶体足夠即可。
集合中的每個物件被稱為元素(elements),每個元素的型態可以不一樣,因為都會被轉換成 Object (未使用泛型時),不過原生資料不允許被在集合之中。
集合的重點在於如何新增移除元素,如何找到並取出元件,以及走訪整個集合。集合重度依靠泛型而寫成的,所以就不再限定只會轉成 Object 。
Collection Type
集合的類型如下圖所示

Map Type
Map 的類型如下圖所示

Collection 介面有三個子類別,分別是 LIst,Queue 及 Set。
Map 是另一個獨立的介面,跟 Collection 無關,它類似 Python 的字典。Collection 介面定義了add,addAll,clear,contains,wquals,remove,removeAll,size,iterator 等相關方法。
Iterator 介面
Iterator 為 Collection 的走訪器,有hasNext(),next(),remove() 等方法,只能由上往下走。若要能往上讀取就要使用ListIterator。
ListIterator 繼承 Iterator,可作新增修改刪除動作,每個元素間都有 index,可用 index 取得元素,有 add,hasNext,hasPrevious,next,nextIndex,previous,previousIndex,remove,set 等方法。
Enumeration 介面
為 Map 的走訪器,有 hasMoreElements,nextElement 等方法。
集合的四特性
了解每一個集合時, 需記住每個集合是否有如下四個特性 :
排序性 : 遞增或遞減的特性。
順序性 : 是否有依加入的順序排列。有順序就無排序, 有排序就無順序。
重複性 : 是否允許出現重複的物件。
鍵值 (Key/value) : 使用鍵值存放物件,只有 Map 使用此法。
| 集合介面 | 排序性 | 順序性 | 不允許重複 | 使用鍵值 |
| ArrayList | v | |||
| LinkedList | v | |||
| Vector | v | |||
| HashSet | v | |||
| LinkedHashSet | v | v | ||
| TreeSet | v | v | ||
| HaspMap | v | |||
| LinkedHashMap | v | v | ||
| HashTable | v | |||
| TreeMap | v | v |
