對我來說,集合類屬於最強大的一種工具,特別適合在原創程式設計中使用。大家可能已感覺到我對Java 1.1 提供的集合多少有點兒失望。因此,看到Java 1.2 對集合重新引起了正確的注意後,確實令人非常愉快。這個版本的集合也得到了完全的重新設計(由Sun 公司的Joshua B loch)。我認為新設計的集合是Java 1.2 中兩項最主要的特性之一(另一項是Swing 庫,將在第13 章敘述),因為它們極大方便了我們的程式設計,也使Java 變成一種更成熟的程式設計系統。有些設計使得元素間的結合變得更緊密,也更容易讓人理解。例如,許多名字都變得更短、更明確了,而且更易使用;型別同樣如此。有些名字進行了修改,更接近於通俗:我感覺特別好的一個是用“迭代器”(Iterator )代替了“列舉”(Enumeration)。此次重新設計也加強了集合庫的功能。現在新增的行為包括連結列表、佇列以及撤消組隊(即“雙終點佇列”)。
新的集合庫考慮到了“容納自己物件”的問題,並將其分割成兩個明確的概念:
(1) 集合(Collection):一組單獨的元素,通常應用了某種規則。在這裡,一個List(列表)必須按特定
的順序容納元素,而一個Set(集)不可包含任何重複的元素。相反,“包”(Bag)的概念未在新的集合庫
中實現,因為“列表”已提供了類似的功能。
(2) 對映(Map):一系列“鍵-值”對(這已在雜湊表身上得到了充分的體現)。從表面看,這似乎應該成
為一個“鍵-值”對的“集合”,但假若試圖按那種方式實現它,就會發現實現過程相當笨拙。這進一步證
明瞭應該分離成單獨的概念。另一方面,可以方便地檢視Map 的某個部分。只需建立一個集合,然後用它表
示那一部分即可。這樣一來,Map 就可以返回自己鍵的一個Set、一個包含自己值的List 或者包含自己“鍵
-值”對的一個List。和陣列相似,Map 可方便擴充到多個“維”,毋需涉及任何新概念。只需簡單地在一
個Map 裡包含其他Map(後者又可以包含更多的Map,以此類推)。