1. 程式人生 > >【Java集合系列】---總體框架

【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集合中的總體框架,從我們學生時代的集合說起,到計算機中的集合,魯迅說世界上本沒有路,走的人多了也便有了路,今天小編說,世界上本沒有集合,有了這樣的需要,也是有了集合,有了上面的整體框架之後,接下來小編會對每個類分別進行分析,希望對有需要的小夥伴有幫助,還請小夥伴們多多指教,敬請期待`(*_*)


相關推薦

Java集合系列 總體框架

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java集合系列 總體框架

根據上面的類圖,我們可以把java的所有集合分成三大類,其中Set集合類類似於一個糖罐子,把一個物件新增到Set集合裡面的時候,Set集合無法記住新增這個元素的順序,所以Set裡面的元素不能重複,否則系統無法準確識別這個元素;List集合非常像一個數組,她可以記住每次新增元素的順序,可以重複,只是List的長

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

集合--童年的美好時光集合,忽然讓小編想起那段美好的學生時光,集合第一次遇見她的時候,小編當年還是一個懵懂的丫頭,也不曾想過會在計算機的世界再次相遇,再回首,集合在數學中是一個基本概念,集合就是“一堆東

java集合系列---HashSet

在前面的博文中,小編主要簡單介紹了java集合中的總體框架,以及list介面中典型的集合ArrayList和LinkedList,接著,我們來看set的部分集合,set集合和數學意義上的集合沒有差別,作為集合,可以容納多個元素,而且,集合裡面沒有重複的元素,Set集合是Col

Java集合系列HashSet和LinkedHashSet解析

inpu skin lam 繼承 depend try put args port 2017-07-29 16:58:13 一、簡介 1、Set概念 Set可以理解為集合,非常類似數據概念中的集合,集合三大特征:1、確定性;2、互異性;3、無序性,因此Set實現類也有類似的

深入學習java集合系列LinkedHashMap的底層實現

最近寫到LeetCode上的某一題LRUCache。可以採用LinkedHashMap實現,通過重寫removeEldestEntry方法,即可實現。 LinkedHashMap map; public LRUCache(int capacity) {

Java 並發Executor框架機制與線程池配置使用

需求 executor star 線程池 now() 等待 依賴 imu rup 【Java 並發】Executor框架機制與線程池配置使用 一,Executor框架Executor框架便是Java 5中引入的,其內部使用了線程池機制,在java.util.cocurren

Java入門系列垃圾回收

通過 解決 roots java入門 算法 無限 不可用 但是 搜索 垃圾回收 如果不進行垃圾回收,內存遲早都會被消耗空,因為我們在不斷的分配內存空間而不進行回收。除非內存無限大,我們可以任性的分配而不回收,但是事實並非如此。 垃圾回收其實做了兩件事:1、發現無用的對象;2

Java入門系列this關鍵字

span 相同 成員變量 pan 代碼 由於 stat spa pre 學習this關鍵字之前,先來看下對象創建的過程 1、分配對象空間,並將對象成員變量初始化為0或空 2、執行屬性值的顯示初始化 3、執行構造方法 4、返回對象的地址給相關的變量 本質 this關鍵字的本質

Java入門系列static關鍵字

既然 生命 不依賴 影響 能夠 情況下 思想 static 程序 static方法就是沒有this的方法。在static方法內部不能調用非靜態方法,反過來是可以的。而且可以在沒有創建任何對象的前提下,僅僅通過類本身來調用static方法。這實際上正是static方法的主要用

Java爬蟲學習WebMagic框架爬蟲學習實戰一:爬取網易雲歌單資訊,並存入mysql中

最近,需要使用Java進行爬蟲編寫,就去學了Java的爬蟲。因為之前學習了Scrapy框架,所以學Java的爬蟲使用了WebMagic框架,這個框架是基於Scrapy框架開發的。大家有興趣可以去看看操作文件:  這個框架是國人開發的,所以說明文件都是中文,簡單易懂。

Java集合LinkedList原始碼分析(jdk1.8)

ArrayList和LinkedList是List介面的兩種實現,具有相同的查詢、插入、刪除操作,只是底層的實現方式不一樣。LinkedList是以雙向連結串列形式實現的集合類。 其增刪操作由於不需要移

Java集合 LinkedHashMap(有序的map)獲取第一個元素和最後一個元素

獲取LinkedHashMap中的頭部元素(最早新增的元素): 時間複雜度O(1) public <K, V> Entry<K, V> getHead(LinkedHashMap<K, V> map) { retu

Java重構系列重構31式之搬移方法

重構第二式:搬移方法 (Refactoring 2: Move Method)       毋容置疑,搬移方法(Move Method)應該是最常用的重構手段之一,正因為太常用而且較為簡單,以至於很多人

Java Opencv系列4.3讀取攝像頭並顯示

程式碼如下: package imageIO; import java.awt.EventQueue; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import org.open

java開發系列— JDOM建立、修改、刪除、讀取XML檔案

有很多中操作XML檔案的方法,這裡介紹一下JDOM的使用方法和技巧。 建立XML文件 XML檔案是一種典型的樹形檔案,每個文件元素都是一個document元素的子節點。而每個子元素都是一個Element物件,物件可以向下包含。 1 因此我們可以通過先建立元素再將元

Java 集合Hashtable和HashMap、Vector和ArrayList,來說說

環境: jdk1.8 這兩類(4個類)的比較經常出現在面試中: 解決思路:看原始碼 1.Hashtable和HashMap 1.Hashtable(注意table小寫)裡為了保證

java集合根介面Collection、Map

       Java集合類是一種非常實用的工具類,主要用於儲存、盛裝其它資料(集合裡只能儲存物件),因此集合類也被成為容器類。所有的集合類都位於java.util包下,在java.util.concurrent下還提供了一些支援多執行緒的集合類。Java的集合類主要由兩

java集合框架原始碼剖析系列java原始碼剖析之HashMap

前言:之所以打算寫java集合框架原始碼剖析系列部落格是因為自己反思了一下阿里內推一面的失敗(估計沒過,因為寫此部落格已距阿里巴巴一面一個星期),當時面試完之後感覺自己回答的挺好的,而且據面試官最後說的這幾天可能會和你聯絡來看當時以為自己一面應該是通過的,但是事與願違,痛定

Java多執行緒系列--JUC集合01- 框架

參考:http://www.cnblogs.com/skywang12345/p/3498454.html 概要 之前,在""中,講解了Java集合包中的各個類。接下來,將展開對JUC包中的集合進行學習。在學習之前,先溫習一下"Java集合包"。本章內容包括:Jav