java集合框架本质是collection与map两大并列独立体系:collection为单列集合(含list、set、queue),map为双列键值对集合,二者无继承关系,分别解决元素存储与映射关系两类问题。

Java 集合框架本质上是两组独立、并列的体系:一个是 Collection(单列集合),用于存单个元素;另一个是 Map(双列集合),用于存键值对。它们没有继承关系,各自解决不同场景的问题。
Collection 体系:单元素存储的三大分支
Collection 是单列集合的根接口,继承自 Iterable(所以所有 Collection 实现类都能用 for-each 循环)。它不直接使用,而是通过三个核心子接口展开:
-
List:有序、可重复、支持索引访问
典型实现有ArrayList(数组实现,读快)、LinkedList(链表实现,增删快)、Vector(线程安全但已过时)。 -
Set:无序(或按规则排序)、不可重复、无索引
常用实现包括HashSet(哈希表,去重快)、LinkedHashSet(维持插入顺序)、TreeSet(红黑树,自动排序)。 -
Queue:专为队列操作设计,遵循 FIFO 原则
如ArrayDeque(推荐替代 Stack)、PriorityQueue(按优先级排序)。
Map 体系:键值对映射的核心结构
Map 独立于 Collection,它的核心是“键唯一、值可重复”,通过 key 快速定位 value。关键实现类有:
-
HashMap:最常用,基于哈希表 + JDK8 后红黑树优化,平均 O(1) 查找;非线程安全。 -
LinkedHashMap:在 HashMap 基础上加双向链表,可按插入或访问顺序遍历。 -
TreeMap:基于红黑树,key 自动排序,支持范围查询(如subMap)。 -
Hashtable和Properties:老式线程安全 Map,现多被ConcurrentHashMap替代。
底层数据结构决定行为与性能
每个集合类的特性不是凭空来的,而是由其底层结构决定的:
- 数组结构(如 ArrayList)→ 连续内存、随机访问快、增删慢(需移动)。
- 链表结构(如 LinkedList)→ 节点分散、增删快(改指针)、访问慢(需遍历)。
- 哈希表(如 HashSet / HashMap)→ 依赖 hash + equals,查找快,但无序(除非 Linked 版本)。
- 红黑树(如 TreeSet / TreeMap)→ 自平衡二叉搜索树,天然支持排序和范围操作。
选择集合的关键看业务需求
不用死记硬背,按实际场景反推即可:
- 要按顺序取数据、经常 get(i) → 选
List,优先ArrayList。 - 要去重、不关心顺序 →
HashSet;要保留添加顺序 →LinkedHashSet。 - 需要 key-value 映射、查得快 →
HashMap;还要有序 →LinkedHashMap或TreeMap。 - 多线程写入 → 避免 Vector/Hashtable,改用
CopyOnWriteArrayList或ConcurrentHashMap。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











