一 List三個子類的區別和應用場景
Vector:底層是數組,查詢快,增刪慢數組
Arraylist:底層是數組,查詢塊,增刪慢安全
LinkedList:底層是鏈表,查詢慢,增刪快數據結構
效率:性能
Vector:線程同步(安全),效率低線程
ArrayList:線程不一樣步(不安全),效率高對象
它用來代替Vector的。排序
LinkedList:線程不安全,效率高繼承
二 Set集合的三個子類:
- HashSet集合
- 底層實際上是包裝了一個HashMap實現的
- 底層數據結構是數組+鏈表 + 紅黑樹
- 具備比較好的讀取和查找性能, 能夠有null 值
- 經過equals和HashCode來判斷兩個元素是否相等
- 非線程安全
- LinkedHashSet集合
- 繼承HashSet,本質是LinkedHashMap實現
- 底層數據結構由哈希表(是一個元素爲鏈表的數組)和雙向鏈表組成。
- 有序的,根據HashCode的值來決定元素的存儲位置,同時使用一個鏈表來維護元素的插入順序
- 非線程安全,能夠有null 值
- TreeSet集合
- 是一種排序的Set集合,實現了SortedSet接口,底層是用TreeMap實現的,本質上是一個紅黑樹原理
- 排序分兩種:天然排序(存儲元素實現Comparable接口)和定製排序(建立TreeSet時,傳遞一個本身實現的Comparator對象)
- 正常狀況下不能有null值,能夠重寫Comparable接口 局能夠有null值了。
- 集合元素必須是枚舉類型,不然會拋出異常
- EnumSet集合也是有序的,其順序就是Enum類內元素定義的順序
- · EnumSet存取的速度很是快,批量操做的速度也很快