章节导读
本章定位:深入理解 Java 集合框架的两大体系——Collection 与 Map。从 ArrayList 的扩容机制到 HashMap 的红黑树转换,从迭代器的 fail-fast 到 Collections 工具类的线程安全包装,覆盖 985 高校计算机专业面试中集合框架的全部高频考点。
学习路线图
章节知识结构
| 模块 | 核心内容 | 面试权重 | 难度 |
|---|---|---|---|
| 集合框架概述 | Collection/Map 体系、Iterator 迭代器、fail-fast 机制 | ★★★ | ★★ |
| ArrayList | 动态数组扩容(1.5倍)、随机访问 O(1)、modCount | ★★★★ | ★★★ |
| LinkedList | 双向链表、Deque 双端队列、头尾操作 O(1) | ★★★ | ★★ |
| HashSet | 基于 HashMap、hashCode/equals 契约、无序性 | ★★★ | ★★ |
| TreeSet & Comparable | 红黑树、自然排序 vs 定制排序、compareTo/compare | ★★★★ | ★★★ |
| HashMap | 数组+链表+红黑树、扩容2倍、树化条件、put 源码 | ★★★★★ | ★★★★★ |
| TreeMap | 红黑树、键排序、NavigableMap 导航方法 | ★★★★ | ★★★★ |
| LinkedHashMap | HashMap + 双向链表、LRU 缓存实现 | ★★★★ | ★★★★ |
| Collections 工具类 | sort/binarySearch、同步包装、不可变包装 | ★★★ | ★★ |
场景设定
本章全部示例基于 飞翔科技公司 的真实业务场景展开:
- 大翔:飞翔科技 CEO,关注整体架构和数据安全
- 白歌:技术部架构师,负责代码审查和技术选型
- 小崔:后端开发工程师(新人),经常踩坑但进步飞快
- 孔蓝:测试部工程师,擅长发现并发问题和边界条件
核心业务场景:
| 场景 | 涉及集合类 | 业务描述 |
|---|---|---|
| 员工列表管理 | ArrayList / LinkedList | 维护公司员工信息的增删改查 |
| 部门映射 | HashMap | 部门编号 → 部门详情的快速查找 |
| 员工排序 | TreeSet / TreeMap | 按入职时间、工资对员工排序 |
| 考勤去重 | HashSet | 每日打卡记录去重统计 |
| LRU 缓存 | LinkedHashMap | 最近访问的员工信息缓存 |
| 工资排序 | Collections.sort() | 月度工资报表排序 |
前置知识要求
- Java 面向对象基础(类、接口、继承、多态)
- 泛型基础(
List<E>、Map<K,V>等泛型声明) - 基本数据结构概念(数组、链表、哈希表、树)
- equals() 和 hashCode() 方法(Object 类)
学习建议
- 先建立体系认知:从「集合框架概述」开始,理解 Collection 和 Map 两大体系的继承关系
- 对比学习 List 实现:将 ArrayList 和 LinkedList 放在一起对比,理解数组 vs 链表的本质差异
- Hash 系列对比:HashSet → HashMap,理解 Set 是对 Map 的封装
- Tree 系列对比:TreeSet → TreeMap,理解红黑树在有序集合中的应用
- HashMap 是重中之重:投入最多时间,理解 put/get 源码流程、扩容机制、树化条件
- 动手验证:每个示例都要自己运行,修改参数观察行为变化