翻譯自:http://docs.oracle.com/javase/tutorial/collections/interfaces/index.html
核心集合介面封裝了不同類型的集合,如所示。這些介面使得我們可以操作集合而不必關心它們的具體實現細節。核心集合介面是Java集合架構的基礎。正如我們可以從看到的,核心集合介面形成了階層:
Set是一種特殊的集合,而一個SortedSet是一種特殊的Set,以此類推。注意的階層中包含兩棵獨立的樹 — Map不是一個真正意義上的集合。
注意所有的核心集合介面都是泛型化的(generic)。例如下面是Collection介面的聲明:
public interface Collection<E>...
<E>文法告訴我們這個介面是泛型化的。當我們聲明一個集合執行個體時,我們可以也必需指定集合中對象的類型。指定類型使得編譯器能在編譯時間驗證集合中的元素的類型都是正確的,從而減少執行階段錯誤。如果想擷取更多的關於泛型的資訊,敬請參考Java Generic Turtorial 。
當你學會使用這些介面後,你就瞭解了Java集合架構中的大部分內容。本章討論關於如何有效使用這些介面的一些建議,包括何時使用何種介面。我們也將學會每個介面的一些習慣用法。
為了保證核心集合介面的數量可控,Java平台沒有為每一種集合類型的變種都提供單獨的介面(這些變種包括不可變、固定大小以及只可追加)。相反,每個集合介面上的操作都是可定製的(可選的),某個集合介面的實現可能不會支援所有集合操作。如果調用集合不支援的一個操作,將拋出UnsupportedOperationException。集合介面的實現必需用文檔記錄它所支援的集合操作。
下面的列表描述了Java集合架構的幾個核心介面:
- Collection:集合階層樹的根介面。一個Collection表示一組元素對象。Collection介面是所有集合對象都必須實現的介面。一些Collection介面的實現允許重複元素,而另外一些則不允許。Java平台沒有提供任何對這個介面的直接實現,但是提供了一些更加專用的子介面,比如Set介面和List介面。更多請參考The Collection Interface
- Set:一個不能包含重複元素的集合。這個介面對應數學上的Set,被用來表示數學意義上的集合,比如一手牌、一個學生選的課或者機器上啟動並執行進程。更多請參考The Set Interface
- List:一個有序集合(有時候又叫做序列)。List可以包含重複元素。使用List可以精確控制每個元素在List中的位置,可以指定index插入元素或者訪問元素。如果你已經使用過Vector,那麼你已經熟悉了List的一般功能了。更多請參考The List Interface
- Queue:隊列。除了基本的集合操作外,一個Queue提供了額外的插入、刪除和審查元素操作。Queue一般(但非必須)將元素組織成FIFO(先進先出)形式。有一個例外是優先隊列,它按照使用者提供的Comparator或者自然序排列元素。不管怎麼排序,隊列的頭始終是第一個被移除的,當調用remove或者poll方法後。在一個先進先出隊列中,新插入的元素總是放到隊列末尾。其他種類的隊列可能會使用不同的放置規則。所有隊列實現都必需指定它的排序屬性。更多請參考The Queue Interface
- Map: 將鍵(keys)映射到值(values)的對象。一個Map不能包含重複的鍵;每個鍵最多隻能映射到一個值。如果你使用過Hashtable,那麼你已經熟悉了Map的基本使用。更多請參考The Map Interface
最後兩種核心集合介面僅僅是Set和Map的排序版本:
- SortedSet:元素按照升序排列的Set。SortedSet提供了幾個額外的操作來利用排序特性。SortedSet常被用來出力自然排序集合,例如單字清單和會員名冊。更多請參考The SortedSet Interface
- SortedMap:鍵按照升序排列的Map。SoretedMap常被用作自然排序的key/value對,例如字典和電話簿。更多請參考The SoretedMap Interface
想瞭解排序介面如何排序元素,請參考The Object Ordering