「譯」Java集合框架系列教程二:集合介面

迷渡發表於2013-01-19

原文:http://docs.oracle.com/javase/tutorial/collections/interfaces/index.html

譯文:Java集合框架系列教程二:集合介面

核心集合介面封裝了不同型別的集合,如下圖所示。這些介面使得我們可以操作集合而不必關心它們的具體實現細節。核心集合介面是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

相關文章