標籤:
Java SE 包含了由一組類和介面組成的Java集合架構(Java Collection Framework,簡稱JCF),其主要功能是用來將儲存的資料以某種結構組織,並以特定的方式來訪問這些資料,其目標是提供一個處理對象集合的通用架構,減少程式員處理不同的對象集合時的編碼量,而Java集合類都位於java.util包中。
接下來就簡單的談下JCF類的內容。首先Java集合架構將對象的儲存方式分為三種類型,分別是:Set(集)、List(列表)、Map(映射)。
Set(集):對象容器中的對象沒有順序,且不能重複,對應介面Set;Set介面繼承自Collection介面的全部方法,對於我們這些Java初學者來說,需要先掌握Set介面下的HashSet類和TreeSet類。
HashSet類的特點是:當遍曆HashSet時,其中的元素是沒有順序的;HashSet中不允許出現重複元素,這裡的重複元素是指有相同的雜湊碼,並且用equals()方法進行比較時,返回true的兩個對象;允許包含null元素。
TreeSet類使用元素的自然順序對元素進行排序,或者根據建立set時提供的Comparator進行排序,具體取決於使用的構造方法。也就是說,TreeSet支援自然排序和自訂排序兩種方式。預設情況下,TreeSet採用自然排序方式。
List(列表):List中的元素是有順序的;List通常允許重複元素;List的實作類別通常支援null元素;可以同過索引訪問List對象容器中的元素。我們需要先掌握該介面下的ArrayList類和LinkedList類。
ArrayList類在概念上和數組類似,表示一組編入索引的元素,區別之處在於ArrayList沒有預先確定的大小,其長度可按需增大。
LinkedList類是實現了雙向鏈表功能的列表,它將列表中的每個對象放在獨立的空間裡中,而且每個空間中還儲存有上一個和下一個連結的索引;LinkedList不支援快速隨機訪問,如果要訪問LinkedList中第n個元素,必須從頭開始尋找,然後跳過前面的n-1個元素。並且,雖然LinkedList也提供了一個get()方法,可以根據指定的索引來擷取對應的元素,但是正因為它不支援快速隨機訪問,所以效率比較低下。
Map(映射):是Java集合架構中不同於Collection介面的另一個重要介面,它對應的是在一種從鍵(key)到值(value)的對應關係的集合。也就是說,Map類型的對象容器裡面儲存著兩組對象,一組對象用於儲存Map裡的key,另外一組用於儲存value。key和value可以是任何參考型別的資料。key不能重複,但是value可以重複。我們需要先掌握HashMap類和TreeMap類。
HashMap類是基於雜湊演算法的Map介面的實現。HashMap將它的鍵儲存在雜湊表中進行維護,鍵是唯一的。但是,HashMap並不保證鍵以特定順序排列,特別是不保證順序永久不變。
TreeMap類是基於紅/黑樹狀結構演算法的Map介面實現。TreeMap中鍵的存放方式與TreeSet相似,它將鍵存放在樹中,鍵的順序按照自然順序或者自訂順序兩種方式排列。
《JAVA集合架構(JCF)》