核心集合接口封裝了不一樣類型的集合,以下圖所示,這些接口容許獨立於其表示的細節來操縱集合,核心集合接口是Java集合框架的基礎,以下圖所示,核心集合接口造成層次結構。html
Set
是一種特殊的Collection
,SortedSet
是一種特殊的Set
,依此類推,另請注意,層次結構由兩個不一樣的樹組成 — Map
不是真正的Collection
。java
請注意,全部核心集合接口都是泛型,例如,這是Collection
接口的聲明。編程
public interface Collection<E>...
<E>
語法告訴你該接口是泛型,聲明Collection
實例時,你能夠而且應該指定集合中包含的對象類型,指定類型容許編譯器驗證(在編譯時)你放入集合的對象類型是否正確,從而減小運行時的錯誤,有關泛型類型的信息,請參閱泛型課程。segmentfault
當你瞭解如何使用這些接口時,你將瞭解有關Java集合框架的大部分知識,本章討論有效使用接口的通用準則,包括什麼時候使用哪一個接口,你還將學習每一個接口的編程語法,以幫助你充分利用它。api
爲了保持核心集合接口的數量可管理,Java平臺不爲每一個集合類型的每一個變體提供單獨的接口(此類變體可能包括不可變、固定大小和僅附加),相反,每一個接口中的修改操做被指定爲可選的 — 給定的實現能夠選擇不支持全部操做。若是調用了不受支持的操做,則集合將拋出UnsupportedOperationException,實現負責記錄它們支持哪些可選操做,全部Java平臺的通用實現都支持全部可選操做。oracle
如下列表描述了核心集合接口:框架
Collection
— 集合層次結構的根,集合表示一組稱爲其元素的對象,Collection
接口是全部集合實現的最小公分母,用於傳遞集合並在須要最大通用性時對其進行操做。某些類型的集合容許重複元素,而其餘集合則不容許,有些是有序的,有些則是無序的。Java平臺不提供此接口的任何直接實現,但提供了更具體的子接口的實現,例如Set
和List
,另請參閱Collection接口部分。Set
— 一個不能包含重複元素的集合,該接口模擬數學集抽象,用於表示集合,例如包含撲克牌的牌,構成學生日程表的課程或在機器上運行的進程,另請參見Set
接口部分。List
— 有序集合(有時稱爲序列),List
能夠包含重複元素,List
的用戶一般能夠精確控制列表中每一個元素的插入位置,並能夠經過整數索引(位置)訪問元素,若是你使用過Vector
,那麼你就熟悉List
的通常風格,另請參閱List
接口部分。Queue
— 用於在處理以前保存多個元素的集合,除了基本的Collection
操做外,Queue
還提供追加插入、提取和檢查操做。Queue
一般(但不必定)以FIFO(先進先出)方式對元素進行排序,除了優先級隊列以外,優先級隊列根據提供的比較器或元素的天然順序對元素進行排序。不管使用什麼順序,隊列的頭部是經過調用remove
或poll
移除元素,在FIFO隊列中,全部新元素都插入隊列的尾部,其餘類型的隊列可能使用不一樣的放置規則,每一個Queue
實現都必須指定其排序屬性,另請參閱Queue
接口部分。學習
Deque
— 用於在處理以前保存多個元素的集合,除了基本的Collection
操做外,Deque
還提供追加插入、提取和檢查操做。Deque
可用做FIFO(先進先出)和LIFO(後進先出),在雙端隊列中,能夠在兩端插入、檢索和刪除全部新元素,另請參閱Deque
接口部分。spa
Map
— 將鍵映射到值的對象,Map
不能包含重複的鍵,每一個鍵最多能夠映射一個值,若是你使用過Hashtable
,那麼你已經熟悉了Map
的基礎知識,另請參閱Map
接口部分。最後兩個核心集合接口只是Set
和Map
的排序版本:code
SortedSet
— 一個按升序維護其元素的Set
,提供了幾個額外的操做以利用排序,排序集用於天然排序的集合,例如單詞列表和成員名冊,另請參閱SortedSet
接口部分。SortedMap
— 按升序鍵順序維護映射的Map
,這是SortedSet
的Map
模擬,排序映射用於天然排序的鍵/值對集合,例如字典和電話目錄,另請參閱SortedMap
接口部分。要了解排序接口如何維護其元素的順序,請參閱對象排序部分。
核心集合接口是Java集合框架的基礎。
Java集合框架層次結構由兩個不一樣的接口樹組成:
Collection
接口開始,它提供了全部集合使用的基本功能,例如add
和remove
方法,它的子接口 — Set
、List
和Queue
— 提供更專業的集合。Set
接口不容許重複元素,這對於存儲諸如一副紙牌或學生記錄之類的集合很是有用,Set
接口有一個子接口SortedSet
,它提供了集合中元素的排序。List
接口提供有序集合,適用於須要精確控制每一個元素插入位置的狀況,你能夠按照其確切位置從List
中檢索元素。Queue
接口支持追加插入、提取和檢查操做,Queue
中的元素一般以FIFO爲基礎進行排序。Deque
接口能夠在兩端插入、刪除和檢查操做,Deque
中的元素可用於LIFO和FIFO。Map
接口開始,它映射鍵和值相似於Hashtable
。Map
的子接口SortedMap
按升序或按Comparator
指定的順序維護其鍵值對。這些接口容許獨立於其表示的細節來操縱集合。