java集合:常用集合的數據結構


List

有序可重復

ArrayList

ArrayList數據結構是數組。查詢快,增刪慢。ArrayList是線程不安全的,允許元素為null 。

Vector

線程安全的數組,效率較差,已經過時不用。

LinkedList

LinkedList 數據結構是雙向鏈表,插入刪除比較方便。LinkedList 是線程不安全的,允許元素為null 。

Map

HashMap :

jdk1.8中HashMap底層是哈希表數據結構,數組+鏈表+紅黑樹,HashMap是線程不安全的,允許使用null鍵和null值,

HashMap根據鍵的HashCode值存儲數據,具有很快的訪問速度。

HashMap存入的鍵值對在遍歷時的順序是隨機的。

HashMap不支持並發

HashTable:

線程安全,使用synchronized鎖住全部數據,效率較低。

LinkedHashMap:

LinkedHashMap 是HashMap的一個子類,默認LinkedHashMap遍歷時輸出的順序和put輸入的順序是相同的。

LinkedHashMap有兩種排序方式:插入排序和訪問排序(修改或訪問一個元素后,將該元素移到隊列末尾),默認是插入排序。使用accessOrder來標記使用哪種排序方式,accessOrder==true時,表示使用訪問排序,默認為false;

LinkedHashMap使用了雙向鏈表來保證了順序性。

    public LinkedHashMap(int initialCapacity,
                         float loadFactor,
                         boolean accessOrder) {
        super(initialCapacity, loadFactor);
        this.accessOrder = accessOrder;
    }

 

TreeMap:

TreeMap底層是紅黑樹數據結構,線程不安全,可以用於給Map集合中的鍵進行排序

TreeMap遍歷出來的是排序后的鍵值對。

ConcurrentHashMap

ConcurrentHashMap是線程安全的,jdk1.8使用CAS和volatile實現。而jdk1.8以前通過鎖分段技術、可重入鎖實現。

支持並發,可以一邊更新一邊遍歷

Set

HashSet

存放鍵值對,無序不重復。


免責聲明!

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



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