名稱 | 線程安全 | 數據結構 | 容許 null | 默認初始容量 | 擴容策略 | 備註 |
---|---|---|---|---|---|---|
ArrayList | 不安全 | 數組 | 容許 | 10 | 1.5 * old | |
LinkedList | 不安全 | 雙鏈表 | 容許 | N/A | N/A | 做爲 List 使用時,最好換用低複雜度的 TreeList |
CopyOnWriteArrayList | 安全 | 數組 + 快照 | 容許 | 0 | +1 |
名稱 | 線程安全 | 數據結構 | 容許 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 | ? |
名稱 | 線程安全 | 數據結構 | 容許 null | 有序性 | 備註 |
---|---|---|---|---|---|
HashSet | 不安全 | HashMap | 容許 | 無序 | |
LinkedHashSet | 不安全 | LinkedHashMap | 容許 | 有序(insertion-order) | |
TreeSet | 不安全 | TreeMap | 不容許 | 有序 | |
ConcurrentSkipListSet | 安全 | ConcurrentSkipListMap | 不容許 | 有序 | |
CopyOnWriteArraySet | 安全 | CopyOnWriteArrayList | 容許 | 無序 |
名稱 | 線程安全 | 數據結構 | 容許 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 |