一 前言
本次重新撰寫技術類文章,不爲別的,只爲整理自己日常所學,亦爲了大家共同交流努力的目的。文章以面試爲目的,故不在贅述java中特別基礎的部分,如基本數據類型,線程基本實現等。
java集合分爲兩大類:一類是Collection下的List,set,queue;另外一類是map。
二 傳統的JAVA集合類
1.List的主要實現
list的實現 |
特點 |
ArrayList |
動態數組,底層基於數組實現,線程不安全 |
LinkedList |
雙重鏈表實現的隊列,線程不安全 |
Stack |
先進後出,基於Vector實現,線程安全 |
Vector |
動態數組,線程安全 |
2.Set的主要實現
Set的實現 |
特點 |
HashSet |
基於HashMap實現,元素不可重複,迭代無序 |
TreeSet |
基於TreeMap實現(NavigableSet),元素無序,不重複 |
LinkedHashSet |
元素有序,維護一個雙重鏈表以保證有序 |
3.Map的主要實現
Map的實現 |
特點 |
HashMap |
基於哈希表的 Map 接口的實現,線程不安全 |
TreeMap |
基於紅黑樹(Red-Black tree)的 NavigableMap 實現,該類的<k,v>是有序,線程不安全 |
HashTable |
基於哈希表的Map實現,線程安全 |
WeakHashMap |
以弱鍵 實現的基於哈希表的 Map。在 WeakHashMap 中,當某個鍵不再正常使用時,將自動移除其條目。該類是非線程安全的 |
三 JUC集合類
1.List的主要實現
list的實現 |
特點 |
CopyOnWriteArrayList |
相當於線程安全的ArrayList,它實現了List接口,讀寫分離,他是線程安全的 |
2.Set的主要實現類
Set的實現 |
特點 |
CopyOnWriteArraySet |
相當於線程安全的HashSet,內部使用 CopyOnWriteArrayList |
ConcurrentSkipListSet |
一個基於 ConcurrentSkipListMap 的可縮放併發 NavigableSet 實現,內部排序是有序的 |
3.Map的主要實現類包括
Map的實現 |
特點 |
ConcurrentHashMap |
支持獲取的完全併發和更新的所期望可調整併發的哈希表 |
ConcurrentSkipListMap |
可縮放的併發 ConcurrentNavigableMap 實現,內部排序是有序的Map,該類爲線程安全的 |
4.Queue的主要實現類
Queue的實現 |
特點 |
ArrayBlockingQueue |
一個由數組支持的有界阻塞隊列。此隊列按 FIFO(先進先出)原則對元素進行排序 |
LinkedBlockingQueue |
一個基於已鏈接節點的、範圍任意的 blocking queue。此隊列按 FIFO(先進先出)排序元素 |
LinkedBlockingDeque |
一個基於已鏈接節點的、任選範圍的阻塞雙端隊列 |
ConcurrentLinkedQueue |
一個基於鏈接節點的無界線程安全隊列。此隊列按照 FIFO(先進先出)原則對元素進行排序 |
ConcurrentLinkedDeque |
是雙向鏈表實現的無界隊列,該隊列同時支持FIFO和FILO兩種操作方式 |