在程式設計時,可以使用陣列來儲存多個物件,但陣列長度不可變化,一旦在初始化陣列時指定了陣列長度,這個陣列長度就是不可變的,如果需要儲存數量變化的資料,陣列就有點無能為力了。而且陣列無法儲存具有對映關係的資料,如成績表為語文一79,數學一80。這種資料看上去像兩個陣列,但這兩個陣列的元素之間有一定的關聯關係。
為了儲存數量不確定的資料,以及儲存具有對映關係的資料(也被稱為關聯陣列),Java 提供了集合類。集合類主要負責儲存、盛裝其他資料,因此集合類也被稱為容器類。Java 所有的集合類都位於 java.util 包下,提供了一個表示和操作物件集合的統一構架,包含大量集合介面,以及這些介面的實現類和操作它們的演算法。
集合類和陣列不一樣,陣列元素既可以是基本型別的值,也可以是物件(實際上儲存的是物件的參照變數);而集合裡只能儲存物件(實際上只是儲存物件的參照變數,但通常習慣上認為集合裡儲存的是物件)。
集合中的介面
集合框架是一個類庫的集合,包含實現集合的介面。
介面是集合的抽象資料型別,提供對集合中所表示的內容進行單獨操作的可能。
-
Collection 介面:該介面是最基本的集合介面,一個 Collection 代表一個元素。
-
List 介面:該介面實現了 Collection 介面。List 是有序集合,允許有相同的元素。使用 List 能夠精確地控制每個元素插入的位置,使用者能夠使用索引(元素在 List 中的位置,類似於陣列下標)來存取 List 中的元素,與陣列類似。
-
Set 介面:該介面也實現了 Collection 介面。它不能包含重複的元素,SortedSet 是按升序排列的 Set 集合。
-
Map 介面:包含鍵值對,Map 不能包含重複的鍵。SortedMap 是一個按升序排列的 Map 集合。
集合框架中的介面結構如圖 1 所示。
圖 1 集合框架中的介面結構圖