生活随笔
收集整理的這篇文章主要介紹了
Java 8 集合不完全一览
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JDK 8
List
名稱線程安全數據結構允許 null默認初始容量擴容策略備注
| ArrayList | 不安全 | 數組 | 允許 | 10 | 1.5 * old | |
| LinkedList | 不安全 | 雙鏈表 | 允許 | N/A | N/A | 作為 List 使用時,最好換用低復雜度的 TreeList |
| CopyOnWriteArrayList | 安全 | 數組 + 快照 | 允許 | 0 | +1 | |
Map
名稱線程安全數據結構允許 null key允許 null value有序性默認初始容量擴容策略備注
| HashMap | 不安全 | 多個(單鏈表或者紅黑樹)組成的數組 | 允許 | 允許 | 無序 | 16 | 2 * old | |
| IdentityHashMap | 不安全 | 數組 | 允許 | 允許 | 無序 | 32 | ? | |
| LinkedHashMap | 不安全 | 多個雙鏈表組成的數組 | 允許 | 允許 | 有序(access-order 或者 insertion-order) | 16 | 2 * old | |
| TreeMap | 不安全 | 紅黑樹 | 不允許 | 允許 | 有序 | N/A | N/A | |
| EnumMap | 不安全 | 數組 | 不允許 | 允許 | 有序 | N/A | N/A | |
| ConcurrentHashMap | 安全 | 多個(單鏈表或者紅黑樹)組成的數組 | 不允許 | 不允許 | 無序 | 16 | 2 * old | |
| ConcurrentSkipListMap | 安全 | 跳表 | 不允許 | 不允許 | 有序 | N/A | ? | |
Set
名稱線程安全數據結構允許 null有序性備注
| HashSet | 不安全 | HashMap | 允許 | 無序 | |
| LinkedHashSet | 不安全 | LinkedHashMap | 允許 | 有序(insertion-order) | |
| TreeSet | 不安全 | TreeMap | 不允許 | 有序 | |
| ConcurrentSkipListSet | 安全 | ConcurrentSkipListMap | 不允許 | 有序 | |
| CopyOnWriteArraySet | 安全 | CopyOnWriteArrayList | 允許 | 無序 | |
Queue
名稱線程安全數據結構允許 null默認初始容量擴容策略備注
| ArrayDeque | 不安全 | 數組 | 不允許 | 16 | 2 * old | head 從數組的最大下標開始變小,tail 從 0 開始變大 |
| PriorityQueue | 不安全 | 平衡最小二叉堆 | 不允許 | 11 | old < 64 則 2 * old; 否則 1.5 * old | 空穴, sift up,sift down |
| ConcurrentLinkedQueue | 安全 | 單鏈表 + CAS | 不允許 | N/A | N/A | |
| ConcurrentLinkedDeque | 安全 | 雙鏈表 + CAS | 不允許 | N/A | N/A | |
| ArrayBlockingQueue | 安全 | 循環數組 | 不允許 | N/A | 定長, 不可擴容 | 有 fair 選項; 2. 有一把公共的 ReentrantLock 與 notFull、notEmpty 兩個 Condition 管理隊列滿或空時的阻塞狀態 |
| LinkedBlockingQueue | 安全 | 單鏈表 | 不允許 | N/A | 定長或無界 | 利用鏈表的特征,分離了 takeLock 與 putLock 兩把鎖,繼續用 notEmpty、notFull 管理隊列滿或空時的阻塞狀態 |
| LinkedBlockingDeque | 安全 | 雙鏈表 | 不允許 | N/A | 定長或無界 | 利用鏈表的特征,分離了 takeLock 與 putLock 兩把鎖,繼續用 notEmpty、notFull 管理隊列滿或空時的阻塞狀態 |
| PriorityBlockingQueue | 安全 | 平衡最小二叉堆 | 不允許 | 11 | old < 64 則 2 * old; 否則 1.5 * old | 空穴, sift up,sift down |
| DelayQueue | 安全 | PriorityQueue | 不允許 | 見 PriorityQueue | 見 PriorityQueue | ScheduledThreadPoolExecutor 用了類似的結構 |
| SynchronousQueue | 安全 | N/A | 不允許 | 1 | N/A | 有 fair 選項 |
| LinkedTransferQueue | 安全 | 單鏈表 + CAS | 不允許 | N/A | N/A | |
轉載于:https://www.cnblogs.com/leonxyzh/p/7288970.html
總結
以上是生活随笔為你收集整理的Java 8 集合不完全一览的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。