java集合總結

輸入圖片說明

List集合類使用場景java

  1. java提供的List就是一個"線性表接口",ArrayList(基於數組的線性表)、LinkedList(基於鏈的線性表)是線性表的兩種典型實現
  2. Queue表明了隊列,Deque表明了雙端隊列(既能夠做爲隊列使用、也能夠做爲棧使用)
  3. 由於數組以一塊連續內存來保存全部的數組元素,因此數組在隨機訪問時性能最好。因此的內部以數組做爲底層實現的集合在隨機訪問時性能最好。
  4. 內部以鏈表做爲底層實現的集合在執行插入、刪除操做時有很好的性能
  5. 進行迭代操做時,以鏈表做爲底層實現的集合比以數組做爲底層實現的集合性能好

Set集合類使用場景算法

  1. HashSet的性能老是比TreeSet好(特別是最經常使用的添加、查詢元素等操做),由於TreeSet須要額外的紅黑樹算法來維護集合元素的次序。只有當須要一個保持排序的Set時,才應該使用TreeSet,不然都應該使用HashSet
  2. 對於普通的插入、刪除操做,LinkedHashSet比HashSet要略慢一點,這是由維護鏈表所帶來的開銷形成的。不過,由於有了鏈表的存在,遍歷LinkedHashSet會更快
  3. EnumSet是全部Set實現類中性能最好的,但它只能保存同一個枚舉類的枚舉值做爲集合元素
  4. HashSet、TreeSet、EnumSet都是"線程不安全"的,一般能夠經過Collections工具類的synchronizedSortedSet方法來"包裝"該Set集合。 SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));

Map集合類使用場景數組

  1. HashMap和Hashtable的效率大體相同,由於它們的實現機制幾乎徹底同樣。但HashMap一般比Hashtable要快一點,由於Hashtable須要額外的線程同步控制
  2. TreeMap一般比HashMap、Hashtable要慢(尤爲是在插入、刪除key-value對時更慢),由於TreeMap底層採用紅黑樹來管理key-value對
  3. 使用TreeMap的一個好處就是: TreeMap中的key-value對老是處於有序狀態,無須專門進行排序操做
相關文章
相關標籤/搜索