集合類別

      在〈集合類別〉中尚無留言

集合(Collections)

以往要將原生資料或物件放入陣列中,陣列的長度需先宣告,一宣告就不能變更長度。若事先不知道長度或者要隨時可以變更長度,就必需使用集合。可以把集合想成是多啦A夢的百寶袋,要裝多少物件都可以,只要記憶体足夠即可。

集合中的每個物件被稱為元素(elements),每個元素的型態可以不一樣,因為都會被轉換成 Object (未使用泛型時),不過原生資料不允許被在集合之中

集合的重點在於如何新增移除元素,如何找到並取出元件,以及走訪整個集合。集合重度依靠泛型而寫成的,所以就不再限定只會轉成 Object 。

Collection Type

集合的類型如下圖所示

collectionhierarchy

Map Type

Map 的類型如下圖所示

maparchitecture

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *