集合類

集合:
數組

    集合包是最經常使用的包,最經常使用的有Collection和Map兩個接口的實現類,Collection用於存放多個單對象,Map存放k-v形式。
安全

    Collection經常使用的有List和Set
性能

    List經常使用實現ArrayList,LinkedList,Vector,Stack
spa

    Set經常使用實現HashSet,TreeSet
線程

    1,ArrayList採用數組實現,默認大小10對象

        1)Add時,會擴容,Remove時不會減少數組容量,TtrimToSize()
排序

        2)查找元素時遍歷數組,對於非null元素,採用equals方式尋找
繼承

        3)ArrayList是非線程安全的
接口

    2,LinkedList採用雙向鏈表
ci

        1)Add時會先建立一個新的Entry對象

        2)非線程安全

    3,Vector

        1)與ArrayList同樣,採用數組實現,默認大小爲10, capcacityIncreament=0

        3)與ArrayList不同的是,擴容時,capcacityIncreament>0時,擴大爲現有數組+capcacityIncreament;當capcacityIncreament<=0時,擴大爲現有數組2倍

        2)線程安全,add,revmove,get,contains中的indexOf時synchornized

    4,Stack

        1)繼承於Vector,在基礎上增長push,pop,peek操做; 

        2)push調用add操做    

        3)pop調用peek獲取元素,同時刪除數組最後一個元素

        4)peek獲取當前數組大小,取得最後一個元素

        5)基於Vector實現的FILO

    5,HashSet

        1)基於Set接口實現,Set與List最大區別就是Set不容許重複元素,爲了避免容許重複元素出現,採用HashMap來實現;

        2)非線程安全

    6,TreeSet

        1)與HashSet的區別在於,TreeSet支持排序,TreeSet採用TreeMap實現

        2)非線程安全

    7,HashMap

        1)Map的經常使用實現

        2)loadFactor=0.75,threshold臨界值=12,默認建立size=16的Entry對象數組

        3)非線程安全

    8,TreeMap

        1)支持排序的Map

        2)基於紅黑樹實現,無容量限制

        3)非線程安全

性能:

    List實現,隨着元素數量的上升,查找,刪除性能降低明顯。

    Set,Map基本不會受影響。

適用場景:

    ArrayList適用於按位置來讀取元素的場景,LinkedList適用於頭尾操做及插入指定位置的場景,Vector適用於線程安全的ArrayList場景,Stack適用於線程安全的LIFO場景,HashSet適用於沒有重複,不排序場景,TreeSet適用於沒有重複,排序場景,HashMap適用於大多數kv場景,TreeMap適用於kv,排序場景。

相關文章
相關標籤/搜索