【Java集合系列】---總體框架

Aurora Polaris發表於2016-12-07

【Java集合系列】---總體框架


集合--童年的美好時光

集合,忽然讓小編想起那段美好的學生時光,集合第一次遇見她的時候,小編當年還是一個懵懂的丫頭,也不曾想過會在計算機的世界再次相遇,再回首,集合在數學中是一個基本概念,集合就是“一堆東西”,集合裡面的“東西”叫做元素,由一個或多個元素所構成的叫做集合,又邂逅,計算機的世界中,集合是一組可變數量的資料項也可能是0個的組合,這些資料項可能共享某些特徵,需要以某種操作方式一起進行操作,一般來說,這些資料項的型別都是相同的,或者基類相同(若使用的語言支援繼承),列表或陣列通常不認為是集合,因為其大小固定,但是事實上她常常在實現中作為某些形式的集合使用。

世界上本沒有集合,因為有了這樣的需求

世界上本來沒有集合,但是由於有了這樣的需求,所以有了集合。在程式設計的時候,常常需要集合中存放多個資料,當然我們可以使用陣列來儲存多個物件,但是陣列的長度是不可以變化的,一旦在初始化陣列的時候指定了陣列的長度,則這個陣列長度是不可變的,如果需要儲存個數變化的資料,陣列就有點無能為力了,而且陣列無法儲存具有對映關係的資料,如英語-90,數學-88,這種資料看上去像兩個陣列,但是這兩個陣列的元素之間存在著一定的關聯關係,為了儲存數量不確定的資料,以及儲存具有對映關係的資料,也稱為關聯陣列,Java提供集合類,集合類主要乾的活兒就是儲存、盛裝其她資料,因此集合類也稱為容器類。

故人--陣列

要深入理解集合,我們首先要做的就是了解一下我們的故人--陣列,陣列是大小固定的,並且同一個陣列只能存放型別一樣的資料,基本型別或者是引用型別,而java集合可以儲存和運算元目不固定的一組資料,所有的JAVA集合都位於java.util包中,JAVA集合只能存放引用型別的資料,不能存放基本資料型別。java集合類是一種工具類,她可以用於儲存數量不等的多個物件,並可以實現常用的資料結構,如棧、佇列等等,除此之外,Java集合還可以用來儲存具有對映關係的關聯陣列,java的集合大致上可以分為SetListMap三種體系,從JDK1.5以後,Java增加了Queue體系集合,代表一種佇列集合實現。有人想有可以自動擴充套件的陣列,所以有了List,有人想有沒有重複的陣列,所以有了set,有人想有自動排序的陣列,所以有了TreeSet,所以任何事物都不是憑空的產生的,她可是都有自己存在的價值的哦`(*_*)

     Collection集合體系

  java集合主要可以劃分為四個部分,ListSetMap、工具類(Iterator迭代器、Enumeration列舉類、ArraysVCollections),java的集合類主要由兩個介面派生而來,CollectionMap,她們兩個是集合框架的根介面,這兩個介面又包含了一些子介面或實現類,我們通過類圖來幫助我們理解他們之間的關係,首先我們來看Collection集合體系的繼承樹,如下圖所示:

       

上面的類圖畫的是Collection體系裡的集合,其中SetList介面是Collection介面派生的兩個子介面,她們分別代表了無序集合和有序集合,QueueJava提供的佇列實現,有點類似於List。

Map集合體系

接著我們來看Map體系的繼承樹,所有的Map實現類用於儲存具有對映關係的資料。

            

上面的類圖畫的是Map介面的眾多實現類,這些實現類在功能、用法上存在一定的差異,但是她們都有一個功能特徵,Map儲存的每項資料都是key-value對,也就是由於keyvalue兩個值組成,就像前面介紹的英語-90,數學-88,每項成績都是由2個值組成的,學科名稱和成績,對於一張成績表而言,科目通常不會重複,但是成績是可以重複的,通常習慣根據學科名稱來查詢成績,而不會根據成績來查詢學科名稱,Map也與此類似,Map裡的key是不可以重複的,key用來標識集合裡的每項資料,如果需要查詢Map中資料時,總是根據Mapkey來獲取。

Set&&List&&Map

根據上面的類圖,我們可以把java的所有集合分成三大類,其中Set集合類類似於一個糖罐子,把一個物件新增到Set集合裡面的時候,Set集合無法記住新增這個元素的順序,所以Set裡面的元素不能重複,否則系統無法準確識別這個元素;List集合非常像一個陣列,她可以記住每次新增元素的順序,可以重複,只是List的長度可變;Map集合也像是一個糖罐子,只是她裡面的每項資料都由兩個值組成。如果訪問List集合中的元素,可以直接根據元素的索引來進行訪問;如果需要訪問Map集合中的元素,可以根據每項元素的key來訪問其value;如果訪問Set集合中的元素,則只能根據元素本身來訪問,這也是Set集合裡元素不允許重複的原因。前面我們提到過,java集合主要可以劃分為四個部分,ListSetMap、工具類(Iterator迭代器、Enumeration列舉類、Arrays(Collections),Iterator介面也是java集合框架的成員,但她與Collection系列、Map系列的集合不一樣,Collection集合系列和Map集合系列主要用於盛裝其她物件,而Iterator則主要用於遍歷即迭代訪問Collection集合中的元素,Iterator物件也稱為迭代器。Iterator是遍歷集合的工具,我們說Collection依賴於Iterator,是因為Collection的實現類都要實現iterator()函式,返回一個Iterator物件。除此之外,還有兩個工具類ArraysCollections,她們是運算元據、集合的兩個工具類。

小編寄語:該博文,小編主要簡單介紹了java集合中的總體框架,從我們學生時代的集合說起,到計算機中的集合,魯迅說世界上本沒有路,走的人多了也便有了路,今天小編說,世界上本沒有集合,有了這樣的需要,也是有了集合,有了上面的整體框架之後,接下來小編會對每個類分別進行分析,希望對有需要的小夥伴有幫助,還請小夥伴們多多指教,敬請期待`(*_*)



相關文章