目录
1. List
2. Map
3. Set
4. Queue/Deque
5. Stack
ArrayList
624A279A-ED52-4EF9-BCD9-1A9375935E3B.jpg
583929F3-9083-4A2F-9765-F1D2DFE9F761.jpg
List<String> list = Collections.singletonList("2333");
// UnsupportedOperationException
list.add("233");
Vector
- 1.初始化容量量为 10,扩容时加倍
- 2.加锁的 ArrayList
Stack
- 1.继承⾄至 Vector,但初始容量量为空
- 2.peek/pop 数组为空会抛异常
LinkedList
93B51565-3A4D-47F7-A40C-61533E62BF5A.jpg
HashMap
F9AFA52D-BD04-4582-9F69-19D89516ED53.jpg
Hashtable
- 1.初始容量量 11,线程安全
- 2.put 时 key/value 不不可为空,不不然 NPE
- 3.取 index = (hash&0x7FFFFFFF)%tab.length
- 4.扩容是 x2+1
LinkedHashMap
- 1.继承⾄至 HashMap,维护插⼊入顺序,也可实现 LRU 策略略
- 2.get ⽅方法的实现
HashSet
- 1.在其构造⽅方法中 new HashMap 来实现
- 2.add/contains
CopyOnWriteArrayList
- 1.线程安全的 ArrayList,适合读多写少的场景
- 2.实现:synchronized + 数组拷⻉贝 + volatile
ConcurrentHashMap
- 1.线程安全的 HashMap,新增转移节点保证扩容安全
- 2.put 时通过 CAS + ⾃自旋 + synchronized 保证线程安全
LinkedBlockingQueue
- 1.实现了了 BlockingQueue 接⼝口,在 Queue 接⼝口上增加了了阻塞的概念
- 2.链表存储 + ReentrantLock
SparseArray
F17E808B-5C5B-4D76-9378-21BC21F548D4.jpg
ArrayMap
CB435144-70B2-4466-96B6-861F74D382DF.jpg