談談Java中的集合list、set、map之間的區別


參考文獻:https://www.cnblogs.com/IvesHe/p/6108933.html

我這里只總結其區別,具體的說明,請查看參考文獻,講的很詳細。

A、list接口,實現子類有:arraylist,linklist,vector。

arraylist:數組結構、有序、值可重復、線程不安全

linklist:雙向鏈表循環、有序、值可重復、線程不安全

vector:數組實現、有序、值可重復、線程安全(使用synchronized關鍵字)

總結list:

  1.值可重復、允許多個null元素。

  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最常用)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM