導讀:爲了解決數組長度固定不變無法適應變化情況,無法獲取對象真實的儲存個數,查找效率低下等問題,Java集合框架爲我們開發了一套性能優良,使用方便的接口和類,用來保存數據和進行各種數據操作,位於java.util包中。集合框架包含三大塊內容:對外的接口,接口的實現,和對集合運算的算法。
Java集合框架簡圖
特徵:
*List,Set,Map將持有對象一律視爲Object型別。
*Collection、List、Set、Map都是接口,不能實例化,例如:List li=null ,會報空指針異常。
繼承自它們的 ArrayList, Vector, HashTable, HashMap是具象class,這些纔可被實例化。
List接口
List接口通常表示一個列表(數組、隊列、鏈表、棧等),其中的元素有序、可以重複,常用實現類爲ArrayList和LinkedList,另外還有不常用的Vector。另外,LinkedList還實現了Queue接口,因此也可以作爲隊列使用。List和數組類似,List可以動態增長,相當於動態數組,查找元素效率高,插入刪除元素效率低,因爲會引起其他元素位置改變。
Set接口
Set接口通常表示一個集合,其中的元素是有序的集合,不允許重複。Set以哈希表的形式存放元素,檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變。
Map接口
Map是一個映射接口,其中的每個元素都是一個key-value鍵值對。Map主要用於存儲健值對,不要求有序,它是根據鍵得到值,因此不允許鍵重複,但允許值重複。
Iterator迭代器
Iterator是遍歷集合的迭代器(不能遍歷Map,只用來遍歷Collection),Collection的實現類都實現了iterator()函數,它返回一個Iterator對象,用來遍歷集合,ListIterator則專門用來遍歷List。
工具類
Arrays和Collections是用來操作數組、集合的兩個工具類,例如在ArrayList和Vector中大量調用了Arrays.Copyof()方法,而Collections中有很多靜態方法可以返回各集合類的synchronized版本,即線程安全的版本,當然了,如果要用線程安全的結合類,首選Concurrent併發包下的對應的集合類。