參考文獻:http://www.javashuo.com/article/p-rytwayvv-dd.htmlhtml
我這裏只總結其區別,具體的說明,請查看參考文獻,講的很詳細。數組
A、list接口,實現子類有:arraylist,linklist,vector。安全
arraylist:數組結構、有序、值可重複、線程不安全spa
linklist:雙向鏈表循環、有序、值可重複、線程不安全線程
vector:數組實現、有序、值可重複、線程安全(使用synchronized關鍵字)htm
總結list:對象
1.值可重複、容許多個null元素。blog
2.是一個有序容器,保持了每一個元素的插入順序,輸出的順序就是插入的順序。排序
3.經常使用的實現類有 ArrayList、LinkedList 和 Vector。ArrayList 最爲流行,它提供了使用索引的隨意訪問,而 LinkedList 則對於常常須要從 List 中添加或刪除元素的場合更爲合適。索引
B、set接口,實現子類有:hashSet、linkHashSet、TreeSet
hashSet:hash表實現、無效、不可重複
linkHashSet:hash表存儲+雙向鏈表
總結set:
1.不容許重複對象
2. 無序容器,你沒法保證每一個元素的存儲順序,TreeSet經過 Comparator 或者 Comparable 維護了一個排序順序。
3. 只容許一個 null 元素
4.Set 接口最流行的幾個實現類是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基於 HashMap 實現的 HashSet;TreeSet 還實現了 SortedSet 接口,所以 TreeSet 是一個根據其 compare() 和 compareTo() 的定義進行排序的有序容器
C、map接口,實現子類有:HashMap、HashTable
hashMap:鍵不可重複、值可重複、底層哈希表、線程不安全、容許鍵值爲null
hashTable:鍵不可重複、值可重複、線程安全、鍵值都不能爲null
總結map:
1.Map不是collection的子接口,Map是獨立的一個接口。
2.Map 的 每一個 Entry 都持有兩個對象,也就是一個鍵一個值,Map 可能會持有相同的值對象但鍵對象必須是惟一的。
3. TreeMap 也經過 Comparator 或者 Comparable 維護了一個排序順序。
4. Map 裏你能夠擁有隨意個 null 值但最多隻能有一個 null 鍵。
5.Map 接口最流行的幾個實現類是 HashMap、LinkedHashMap、Hashtable 和 TreeMap。(HashMap、TreeMap最經常使用)