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