java集合總結
![在這裏輸入圖片標題 輸入圖片說明](http://static.javashuo.com/static/loading.gif)
List集合類使用場景java
- java提供的List就是一個"線性表接口",ArrayList(基於數組的線性表)、LinkedList(基於鏈的線性表)是線性表的兩種典型實現
- Queue表明了隊列,Deque表明了雙端隊列(既能夠做爲隊列使用、也能夠做爲棧使用)
- 由於數組以一塊連續內存來保存全部的數組元素,因此數組在隨機訪問時性能最好。因此的內部以數組做爲底層實現的集合在隨機訪問時性能最好。
- 內部以鏈表做爲底層實現的集合在執行插入、刪除操做時有很好的性能
- 進行迭代操做時,以鏈表做爲底層實現的集合比以數組做爲底層實現的集合性能好
Set集合類使用場景算法
- HashSet的性能老是比TreeSet好(特別是最經常使用的添加、查詢元素等操做),由於TreeSet須要額外的紅黑樹算法來維護集合元素的次序。只有當須要一個保持排序的Set時,才應該使用TreeSet,不然都應該使用HashSet
- 對於普通的插入、刪除操做,LinkedHashSet比HashSet要略慢一點,這是由維護鏈表所帶來的開銷形成的。不過,由於有了鏈表的存在,遍歷LinkedHashSet會更快
- EnumSet是全部Set實現類中性能最好的,但它只能保存同一個枚舉類的枚舉值做爲集合元素
- HashSet、TreeSet、EnumSet都是"線程不安全"的,一般能夠經過Collections工具類的synchronizedSortedSet方法來"包裝"該Set集合。 SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));
Map集合類使用場景數組
- HashMap和Hashtable的效率大體相同,由於它們的實現機制幾乎徹底同樣。但HashMap一般比Hashtable要快一點,由於Hashtable須要額外的線程同步控制
- TreeMap一般比HashMap、Hashtable要慢(尤爲是在插入、刪除key-value對時更慢),由於TreeMap底層採用紅黑樹來管理key-value對
- 使用TreeMap的一個好處就是: TreeMap中的key-value對老是處於有序狀態,無須專門進行排序操做
歡迎關注本站公眾號,獲取更多信息