Java集合詳解--什麼是集合
什麼是集合
集合類存放於java.util包中。
集合類存放的都是物件的引用,而非物件本身,出於表達上的便利,我們稱集合中的物件就是指集合中物件的引用(reference)。
集合型別主要有3種:set(集)、list(列表)和map(對映)。
通俗的說,集合就是一個放資料的容器,準確的說是放資料物件引用的容器。
有哪些集合
理解這張圖之前我們需要補充一點簡單的UML類圖符號知識。
UML類圖中描述關係的一共有6種關係
依賴
簡單理解就是區域性變數和外部類的關係
關聯
他體現的是兩個類、或者類與介面之間語義級別的一種強依賴關係 簡單理解就是成員變數
聚合
聚合是關聯關係的一種特例,他體現的是整體與部分、擁有的關係,即has-a的關係,此時整體與部分之間是可分離的,他們可以具有各自的生命週期,部分可以屬於多個整體物件,也可以為多個整體物件共享;比如計算機與CPU、公司與員工的關係等;表現在程式碼層面,和關聯關係是一致的,只能從語義級別來區分
合成
組合也是關聯關係的一種特例,他體現的是一種contains-a的關係,這種關係比聚合更強,也稱為強聚合;他同樣體現整體與部分間的關係,但此時整體與部分是不可分的,整體的生命週期結束也就意味著部分的生命週期結束;比如你和你的大腦;表現在程式碼層面,和關聯關係是一致的,只能從語義級別來區分;
簡單來說和聚合差不多,只不過外部類需要和內部成員變數保持同一個生命週期,舉個不是很恰當的例子,有點像Activity和內部的Fragment關係,當Activity銷燬的時候,Fragment跟著一起銷燬
實現
簡單理解就是介面和實現類的關係
泛化
簡單理解就是父類和子類之間的關係,繼承就是泛化的一種
理解了UML類圖之後,我們就能從上圖中分析得知
集合主要分為Collection和Map2個介面
Collection又分別被List和Set繼承
List被AbstractList實現,然後分為3個子類,ArrayList,LinkList和Vector
Set被AbstractSet實現,又分為HashSet和TreeSet
而Map衍生出的集合分為HashMap,HashTable和TreeMap
畫一個樹狀圖的話,就如下顯示了
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
├HashSet
└TreesSet
Map
├Hashtable
├HashMap
└WeakHashMap
Collection介面介紹
首先看下collection的官方註釋
Collection作用就是規定了一個集合有哪些基本的操作
這裡主要是插入資料,清空資料,是否包含,是否相等,集合裡的資料個數和轉化成陣列這幾種操作
於Collection介面相關還有一個抽象類AbstractCollection
AbstractCollection是一個抽象類,實現了Collection介面的部分功能,在部分書籍中稱這種抽象類繼承介面,並且實現部分功能的為抽象骨架類。抽象類實現了一些最基本的通用操作,把複雜的和業務相關的延遲到子類實現。
在AbstractCollection中,主要實現了contains(), isEmpty(), toArray(), remove(), clear() 這幾個操作。有興趣的同學可以自行研究下,邏輯都比較簡單。
總結
在本章中主要介紹了什麼是集合,集合分為哪些型別還有UML類圖的簡單介紹。在下一章中會介紹List介面和它的實現類。