要想深入理解“容器”的概念需要我們首先理解“容器”的宏觀框架——容器框架。容器框架從宏觀角度為我們描述了壹個“容器”的世界,告訴我們在Java的容器世界中有哪些 “容器”、它們之間的關系如何、它們是什麽樣子、它們如何使用。總之,容器框架就是壹個用於表示操作集合的統壹的體系結構,容器框架包含以下元素:
q 接口——它們代表容器類型的抽象數據類型。SCJP 整個Java容器類的基礎後來是容器接口(例如Collection,Map等接口),而不是類。使用接口的最大好處在於將容器的實現與容器的接口分開,這就意味著妳可以使用相同的方法訪問容器而不用關心容器是由什麽樣的數據結構實現的,即接口允許操作容器和不涉及容器所代表的細節。在面向對象的語言中,這些接口壹般組成壹個層次結構。
q 實現—— 它們是容器接口的具體實現。
q 算法—— 它們是在實現集合接口對象上執行運算的方法,如搜索和排序。這些算法被稱為多態的,也就是說,相同的方法可以用於處理某種接口的許多種不同的實現,算法就是可重用的功能。
相比較傳統的容器框架——例如C++的標準模板庫(Standard Template Library)和Smalltalk 的層次結構,Java的容器框架結構清晰,容易掌握。
圖6.1是容器框架中接口以及實現的之間的集成關系圖,它對我們學習Java中大量容器類型是很有幫助的。點線箭頭代表特定的類實現(Implements)壹個接口(若是抽象類,則表示部分實現了接口)。虛線線箭頭表示壹個類可以生成(Produce)箭頭所指向類的對象,例如,任意的Collection可以生成Iterator,而List可以生成ListIterator(當然,也能生成普通的Iterator)。實線箭頭表示類間的繼承(Inheritate)關系。
要想深入理解“容器”的概念需要我們首先理解“容器”的宏觀框架——容器框架。容器框架從宏觀角度為我們描述了壹個“容器”的世界,告訴我們在Java的容器世界中有哪些 “容器”、它們之間的關系如何、它們是什麽樣子、它們如何使用。總之,容器框架就是壹個用於表示操作集合的統壹的體系結構,容器框架包含以下元素:
q 接口——它們代表容器類型的抽象數據類型。整個Java容器類的基礎後來是容器接口(例如Collection,Map等接口),而不是類。使用接口的最大好處在於將容器的實現與容器的接口分開,這就意味著妳可以使用相同的方法訪問容器而不用關心容器是由什麽樣的數據結構實現的,即接口允許操作容器和不涉及容器所代表的細節。在面向對象的語言中,這些接口壹般組成壹個層次結構。
q 實現—— 它們是容器接口的具體實現。
q 算法—— 它們是在實現集合接口對象上執行運算的方法,如搜索和排序。這些算法被稱為多態的,也就是說,相同的方法可以用於處理某種接口的許多種不同的實現,算法就是可重用的功能。
相比較傳統的容器框架——例如C++的標準模板庫(Standard Template Library)和Smalltalk 的層次結構,Java的容器框架結構清晰,容易掌握。
圖6.1是容器框架中接口以及實現的之間的集成關系圖,它對我們學習Java中大量容器類型是很有幫助的。點線箭頭代表特定的類實現(Implements)壹個接口(若是抽象類,則表示部分實現了接口)。虛線線箭頭表示壹個類可以生成(Produce)箭頭所指向類的對象,例如,任意的Collection可以生成Iterator,而List可以生成ListIterator(當然,也能生成普通的Iterator)。實線箭頭表示類間的繼承(Inheritate)關系。