1. 程式人生 > >Java集合詳解--什麼是集合

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介面和它的實現類。