java高階程式設計----集合框架
java高階程式設計----集合框架
這一章內容其實是上一章內容的一個補充,集合框架被設計成要滿足一下幾個目標.
1.該框架必須是高效能的.(基本集合動態陣列,連結串列,樹,雜湊表)的實現也必須是高效的.
2.該框架允許不同型別的集合,以類似的方式工作,具有高度的互操作性.
3.對一個集合的擴充套件和適應必須是簡單的.
為此,整個集合框架就圍繞一組標準介面而設計.你可以直接使用這些介面的標準實現,諸如:LinkedList,HashSet和TreeSet等,除此之外你也可以通過這些介面實現自己的集合.
集合框架是一個用來代表和操縱集合的統一架構.所有的集合框架都包含如下內容
1.介面:是代表集合的抽象資料型別.介面允許集合獨立操縱器代表的細節.在面向對線的語言,介面通常形成一個層次.
2.實現(類):是集合介面的具體實現.從本質上講,他們是可重複使用的資料結構.
3.演算法:是實現集合介面的物件裡的方法執行得一些有用的計算,例如:搜尋和排序.這些演算法被稱為多型,那是因為相同的方法可以在相似的介面上有著不同的實現.
除了集合,該框架也定義了幾個Map介面和類.Map裡儲存的是鍵/值對.儘管Map不是collections,但是他們完全整合在集合中.
集合介面
集合框架定義了一些介面,下面是每個介面的概述:
序號 |
介面描述 |
1 |
Collection介面 允許你使用一組物件,是Collection層次結構的根介面 |
2 |
List介面 繼承於Collection和一個List例項儲存一個有序集合的元素 |
3 |
Set 繼承於Collection,是一個不包含重複元素的集合 |
4 |
SortedSet 繼承於Set儲存有序的集合 |
5 |
Map 將唯一的鍵對映到值 |
6 |
Map.Entry 描述在一個Map中的一個元素(鍵/值對).是一個Map的內部類. |
7 |
SortedMap 繼承於Map,使Key報出在升序排序 |
8 |
Enumeration 這是一個傳統的介面和定義的方法,通過它可以列舉(一次或者一個)物件集合中的元素 |
集合類
Java提供了一套實現了Collection介面的標準集合類.其中一些是具體類,這些類可以直接拿來使用,而另外一些是抽象類,提供了介面的部分實現.
標準集合類彙總如下:
類名 |
描述 |
AbstreactCollection |
實現了大部分的集合介面 |
AbstractList |
繼承於AbstractCollection並且實現了大部分List介面 |
AbstractSequentiaList |
繼承於AbstractList,提供了對資料元素的鏈式訪問而不是隨機訪問. |
LinkedList |
繼承於AbstractSequentiaList,實現了一個連結串列 |
ArrayList |
通過整合AbstractList,實現動態陣列 |
AbstractSet |
繼承於AbstractCollection並且實現了大部分Set介面 |
HashSet |
繼承了AbstractSet,並且使用一個雜湊表 |
LinkedHashSet |
具有可預知迭代順序的Set介面的雜湊表和連線列表實現. |
TreeSet |
繼承於AbstractSet,使用元素的自然順序對元素進行排序 |
AbstractMap |
實現了大部分的Map介面 |
HashMap |
HashMap是一個算列表,它儲存的內容時鍵值對對映.繼承於AbstractMap,實現了Map,Cloneable,Java.io.Serializable介面. |
TreeMap |
繼承了AbstractMap,並且使用一棵樹 |
WeakHashMap |
繼承了AbstractMap,使用弱金鑰的雜湊表 |
LinkedHashMap |
繼承於HashMap,使用元素的自然順序對元素進行排序 |
IdentityHashMap |
繼承AbstractMap,比較文件時使用引用相等. |
集合演算法
集合框架定義了幾種演算法,可用於集合和對映.這些演算法被定義為集合類的靜態方法.在嘗試比較不相容的型別是,一些方法能夠丟擲ClassCastException異常.當試圖修改一個不可修改的集合時.丟擲UnsupportedOperationException異常.
集合定義三個靜態的變數:EMPTY_SET,EMPTY_LIST,EMPTY_MAP.這些變數都不可改變.
如何使用迭代器
通常情況下,你會希望遍歷一個集合中的元素.例如,顯示集合中的每個元素.
做到這一點最簡單的方法是採用一個迭代器,他是一個物件,實現了Iterator介面或ListIterator介面.
迭代器,使你能夠通過迴圈來得到或刪除集合的元素.ListIterator繼承了Iterator,以允許雙向遍歷列表和修改元素.
如何使用比較器
使用Comparator這個介面可以讓我們以不同的方式來排序一個集合.
總結一下
Java集合框架為程式設計師提供了預先包裝的資料結構和演算法來操作他們.
集合是一個物件,可容納其他物件的引用.集合介面宣告對每一種型別的介面可以執行的操作.
集合框架的類和介面均在java.util包中.