List和Set 總結

一 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
  •  集合元素必須是枚舉類型,不然會拋出異常
  • EnumSet集合也是有序的,其順序就是Enum類內元素定義的順序
  • · EnumSet存取的速度很是快,批量操做的速度也很快
相關文章
相關標籤/搜索