Java Collections Framework(JCF)是一个标准化的、分层的接口与实现体系,用于高效存储和操作对象集合。其成员可分为五大核心部分,以下是结构化梳理:
📦 一、顶层接口
-
Collection<E>- 所有单列集合的根接口,定义基础操作(
add,remove,contains等)。 - 子接口:
List<E>:有序可重复集合(如[A, B, A]),支持索引访问。实现类:ArrayList,LinkedList,Vector。Set<E>:无序不可重复集合(如{A, B})。实现类:HashSet,TreeSet,LinkedHashSet。Queue<E>:队列模型,支持FIFO操作。子接口Deque<E>(双端队列)允许两端操作。
- 所有单列集合的根接口,定义基础操作(
-
Map<K,V>- 键值对集合(双列集合),每个键映射唯一值。
- 子接口:
SortedMap<K,V>:按键排序的Map(如TreeMap)。ConcurrentMap<K,V>:线程安全的Map(如ConcurrentHashMap)。
⚙️ 二、核心实现类
List 实现类
| 类名 | 数据结构 | 特点 |
|---|---|---|
ArrayList | 动态数组 | 随机访问快(O(1)),增删慢(需移动元素)。 |
LinkedList | 双向链表 | 增删快(O(1)),随机访问慢(需遍历)。 |
Vector | 动态数组 | 线程安全但性能低,已逐渐被 ArrayList 替代。 |
Set 实现类
| 类名 | 数据结构 | 特点 |
|---|---|---|
HashSet | 哈希表 | 基于 HashMap 实现,查询快(O(1)),无序。 |
TreeSet | 红黑树 | 元素自动排序,需实现 Comparable 或提供 Comparator。 |
LinkedHashSet | 链表+哈希表 | 保留插入顺序,性能接近 HashSet。 |
Queue/Deque 实现类
| 类名 | 特点 |
|---|---|
ArrayDeque | 数组实现双端队列,高效无锁。 |
PriorityQueue | 堆实现优先级队列,元素按自然顺序或自定义顺序出队。 |
Map 实现类
| 类名 | 数据结构 | 特点 |
|---|---|---|
HashMap | 哈希表 | 允许 null 键/值,非线程安全,查询快。 |
TreeMap | 红黑树 | 键自动排序,支持范围查询。 |
LinkedHashMap | 链表+哈希表 | 保留插入顺序或访问顺序。 |
ConcurrentHashMap | 分段锁哈希表 | 高并发场景首选,线程安全且性能优于 Hashtable。 |
🛠️ 三、工具类与辅助接口
-
工具类
Collections:提供静态方法(如sort(),reverse(),synchronizedList())用于集合操作。Arrays:操作数组的工具类(如sort(),binarySearch())。
-
迭代器与比较器
Iterator<E>:基础遍历接口(hasNext(),next(),remove())。Comparator<T>:自定义排序规则(如Comparator.comparing(User::getName))。Comparable<T>:对象自然排序接口(需实现compareTo())。
🚀 四、并发集合(java.util.concurrent 包)
| 类/接口 | 用途 |
|---|---|
CopyOnWriteArrayList | 写时复制List,读操作无锁,适合读多写少场景。 |
BlockingQueue | 阻塞队列(如 ArrayBlockingQueue),生产者-消费者模型核心组件。 |
ConcurrentSkipListMap | 跳表实现的并发 SortedMap,支持高并发排序。 |
💎 总结:框架层次关系
关键特点:
- 动态扩展:多数集合类自动扩容(如
ArrayList默认容量10,扩容1.5倍)。 - 线程安全选择:
- 非并发场景:
ArrayList,HashMap(性能最优)。 - 并发场景:
ConcurrentHashMap,CopyOnWriteArrayList(避免使用遗留的Vector/Hashtable)。
- 非并发场景:
- 性能权衡:
- 随机访问:选
ArrayList(优于LinkedList)。 - 频繁增删:选
LinkedList或ArrayDeque。
- 随机访问:选
完整实现类列表可参考 Java Collections Framework官方文档。
268

被折叠的 条评论
为什么被折叠?



