一、集合框架整体架构
Java 集合框架位于 java.util 包,核心由 接口 + 实现类 + 工具类 构成。
核心接口关系图
Iterable
└── Collection
├── List → 有序、可重复(如 ArrayList, LinkedList)
├── Set → 无序、不可重复(如 HashSet, TreeSet)
└── Queue → 队列(FIFO/LIFO,如 LinkedList, PriorityQueue)
└── Deque → 双端队列(如 ArrayDeque)
Map(不属于 Collection,但属于集合框架)
├── HashMap
├── TreeMap
├── LinkedHashMap
└── ConcurrentHashMap✅ 注意:
Map不是Collection的子接口,但它是集合框架的重要组成部分。
二、List 接口及实现类
使用建议:
优先用
ArrayList:90% 场景足够;频繁在首尾增删 → 考虑
LinkedList(但实际因缓存局部性,ArrayList仍可能更快);高并发读多写少 →
CopyOnWriteArrayList。
// 示例:ArrayList vs LinkedList
List<String> list1 = new ArrayList<>(); // 推荐默认选择
List<String> list2 = new LinkedList<>(); // 仅当频繁首尾操作且数据量大时考虑三、Set 接口及实现类
特点说明:
HashSet:基于哈希,最快,但无序;LinkedHashSet:在HashSet基础上维护插入顺序(额外维护双向链表);TreeSet:自动排序,支持范围查询(如subSet,headSet)。
Set<Integer> set = new TreeSet<>();
set.add(3); set.add(1); set.add(2);
System.out.println(set); // [1, 2, 3] —— 自动排序四、Map 接口及实现类
⚠️ 重要纠正:
ConcurrentHashMap不允许 key 或 value 为 null!
原因:null 无法区分“未找到”还是“值就是 null”,在并发环境下语义模糊。
LinkedHashMap 的两种顺序:
// 按插入顺序(默认)
new LinkedHashMap<>();
// 按访问顺序(可用于 LRU 缓存)
new LinkedHashMap<>(16, 0.75f, true);五、Queue 与 Deque
✅ 最佳实践:
用
ArrayDeque代替Stack(Stack继承Vector,性能差);优先级队列用
PriorityQueue。
// LIFO 栈(推荐)
Deque<Integer> stack = new ArrayDeque<>();
stack.push(1); stack.push(2);
System.out.println(stack.pop()); // 2
// FIFO 队列
Queue<Integer> queue = new ArrayDeque<>();
queue.offer(1); queue.offer(2);
System.out.println(queue.poll()); // 1六、线程安全集合(并发集合)
🔥 重点:
ConcurrentHashMap是高性能并发 Map 的首选!
七、集合工具类与扩展
1. Collections 工具类
// 创建不可变集合(Java 9+ 更推荐用 of())
List<String> immutable = Collections.unmodifiableList(list);
// 同步包装
List<String> syncList = Collections.synchronizedList(new ArrayList<>());
// 排序、查找、填充等
Collections.sort(list);
Collections.max(list);
Collections.fill(list, "default");2. Java 9+ 不可变集合工厂方法(推荐!)
List<String> list = List.of("a", "b", "c"); // 不可变
Set<String> set = Set.of("x", "y"); // 不可变
Map<String, Integer> map = Map.of("age", 25); // 不可变✅ 特点:简洁、安全、性能好(内部优化存储)。
3. 自定义集合(继承或组合)
一般不建议继承
ArrayList等,而是组合 + 委托;如需扩展功能,可实现对应接口或使用装饰器模式。
八、集合选型决策树(参考)
