集合:
數組
集合包是最經常使用的包,最經常使用的有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,排序場景。