標籤:結果 規模 equal 需要 資料結構 元素 shc 集中 檔案
1、列表 List介面(繼承於Collection介面)及其實作類別
List介面及其實作類別是容量可變的列表,可按索引訪問集合中的元素。
特點:集合中的元素有序、可重複;
列表在資料結構中分別表現為:數組和向量、鏈表、堆棧、隊列。
實作類別:
ArrayList 實現一個數組,它的規模可變並且能像鏈表一樣被訪問。它提供的功能類似Vector類但不同步,它是以Array方式實現的List,允許快速隨機存取。
LinkedList實現一個鏈表,提供最佳順序存取,適合插入和移除元素。由這個類定義的鏈表也可以像棧或隊列一樣被使用。提供最佳順序存取,適合插入和移除元素。
2、集 Set介面(繼承於Collection介面)及其實作類別
特點:集合中的元素不按特定方式排序,只是簡單的把對象加入集合中,就像往口袋裡放東西。
對Set中成員的訪問和操作是通過Set中對象的引用進行的,所以集中不能有重複對象。
Set也有多種變體,可以實現排序等功能,如TreeSet,它把對象添加到集中的操作將變為按照某種比較規則將其插入到有序的對象序列中。 它實現的是SortedSet介面,也就是加入了對象比較的方法。通過對集中的對象迭代,我們可以得到一個升序的對象集合。
實作類別:
HashSet 能夠快速定位一個元素,要注意的是:存入HashSet中的對象必須實現HashCode()方法;
TreeSet 將放入其中的元素按序存放。
3、映射 Map介面及其實作類別
Map是一個單獨的介面,不繼承於Collection。Map是一種把鍵對象和值對象進行關聯的容器。
特點:key不允許重複。
映射與集或列表有明顯區別,映射中每個項都是成對的,Map是把鍵對象和值對象進行關聯的容器。映射中儲存的每個對象都有一個相關的關鍵字(Key)對象,關鍵字決定了對象在映射中的儲存位置,檢索對象時必須提供相應的關鍵字,就像在字典中查單詞一樣。關鍵字應該是唯一的,也就是說Map中的鍵對象不允許重複,這是為了保證查詢結果的一致性。
關鍵字本身並不能決定對象的儲存位置,它需要對過一種散列(hashing)技術來處理,產生一個被稱作散列碼(hash code)的整數值,散列碼通常用作一個偏置量,該偏置量是相對於分配給映射的記憶體地區起始位置的,由此確定關鍵字/對象對的儲存位置。理想情況下,散列處理應該產生給定範圍內均勻分布的值,而且每個關鍵字應得到不同的散列碼。
實作類別:
HashMap 實現一個鍵到值對應的雜湊表,通過鍵取得值對象,沒有順序,通過get(key)來擷取value,允許儲存Null 物件,而且允許鍵是空(由於鍵必須是唯一的,當然只能有一個);
HashTable 實現一個映象,所有的鍵必須非空。為了能高效的工作,定義鍵的類必須實現hashcode()方法和equal()方法。這個類是前面java實現的一個繼承,並且通常能在實現映象的其他類中更好的使用。
當元素的順序很重要時選用TreeMap,當元素不必以特定的順序進行儲存時,使用HashMap。Hashtable的使用不被推薦,因為HashMap提供了所有類似的功能,並且速度更快。當你需要在多線程環境下使用時,HashMap也可以轉換為同步的。
Properties 一般是把屬性檔案讀入流中後,以鍵-值對的形式進行儲存,以方便讀取其中的資料。
4、Iterator介面
Iterator介面位於java.util包中,它是一個對集合進行迭代的迭代器。
集合容器(如:List、Set、Map等)本身提供了處理元素置入和取出的方式,但是單一選取元素的方法很受限制。所以我們要用Iterator去選取容器中的元素,它將容器轉換成一個序列。
Iterator iter=Object.iterator();
while(iter.hasNext()){ }
學習Java集合