java集合總結

輸入圖片說明

List集合類使用場景

  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對總是處於有序狀態,無須專門進行排序操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章