Java集合類存放於 java.util 包中,是一個用來存放對象的容器。java
注意:①、集合只能存放對象。好比你存一個 int 型數據 1放入集合中,其實它是自動轉換成 Integer 類後存入的,Java中每一種基本類型都有對應的引用類型。編程
②、集合存放的是多個對象的引用,對象自己仍是放在堆內存中。數組
③、集合能夠存放不一樣類型,不限數量的數據類型。安全
在這裏,集合類分爲了Map和Collection兩個大的類別。數據結構
處於圖片左上角的那一塊灰色裏面的四個類(Dictionary、HashTable、Vector、Stack)都是線程安全的,但是它們都是JDK的老的遺留類。現在基本都不怎麼使用了,都有了相應的取代類。當中Map是用來取代圖片中左上角的那個Dictionary抽象類(Map的官方文檔裏面有說明)。併發
官方推薦使用Map接口來取代它。相同對於HashTable。官方推薦ConcurrentHashMap來取代。接着如下的Vector是List如下的一個實現類。線程
接着最上面的粉紅色部分是集合類所有接口關係圖。code
當中Map的結構比較簡單,而Collection的結構就相對複雜一些。Collection有三個繼承接口:List、Queue和Set。對象
接下來的綠色部分則是集合類的主要實現類了。繼承
這也是咱們最經常使用的集合類了。
依照實現接口分類:
實現Map接口的有:EnumMap、IdentityHashMap、HashMap、LinkedHashMap、WeakHashMap、TreeMap
實現List接口的有:ArrayList、LinkedList
實現Set接口的有:HashSet、LinkedHashSet、TreeSet
實現Queue接口的有:PriorityQueue、LinkedList、ArrayQueue
依據底層實現的數據結構分類:
底層以數組的形式實現:EnumMap、ArrayList、ArrayQueue
底層以鏈表的形式實現:LinkedHashSet、LinkedList、LinkedHashMap
底層以hash table的形式實現:HashMap、HashSet、LinkedHashMap、LinkedHashSet、WeakHashMap、IdentityHashMap
底層以紅黑樹的形式實現:TreeMap、TreeSet
底層以二叉堆的形式實現:PriorityQueue
最下方的一個整塊都是java.util.concurrent包裏面的類,依照包名咱們就可以知道這個包裏面的類都是用來處理Java編程中各類併發場景的。
下篇將介紹各經常使用實現類的區別和聯繫