CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Java 核心深化/课时/集合框架
RawBlame
课时目录12 节

Java 核心深化

  1. 01Java 核心地图
  2. 02类型与变量
  3. 03控制流
  4. 04类与对象
  5. 05抽象与接口
  6. 06集合框架
  7. 07Lambda 与 Stream
  8. 08并发基础
  9. 09I/O 与 NIO
  10. 10构建工具
  11. 11测试与 JUnit
  12. 12综合练习

集合框架

map、dequeue、iterator;对照 jva-collections。

35 分钟

集合框架

java-collections 已讲 List——本课深化 Map 语义、Deque 双端队列、Iterator 与 fail-fast,并对照 jva-collections 的 Set/Queue 选型。

学习目标

  • 熟练使用 HashMap、LinkedHashMap、TreeMap 的差异
  • 用 ArrayDeque 实现栈与队列
  • 理解 Iterator 与并发修改异常

Map:键值查找

Map<String, Lesson> bySlug = new HashMap<>();
bySlug.put("jvc-types", new Lesson("jvc-types", "类型与变量"));
bySlug.putIfAbsent("jvc-types", other); // 不覆盖已有

for (Map.Entry<String, Lesson> e : bySlug.entrySet()) {
    System.out.println(e.getKey() + " → " + e.getValue().title());
}

// JDK 8+ 便捷 API
bySlug.forEach((slug, lesson) -> System.out.println(slug));
实现特点
HashMap无序,O(1) 均摊 get/put
LinkedHashMap插入顺序或 access-order(LRU 缓存)
TreeMap按 key 排序,Red-Black 树

键 必须正确实现 equals/hashCode;可变对象作 key 是 bug 温床。

Deque:队列与栈

Deque<String> queue = new ArrayDeque<>();
queue.offerLast("task-1");
queue.pollFirst(); // FIFO

Deque<String> stack = new ArrayDeque<>();
stack.push("a");
stack.pop(); // LIFO,等价 addFirst/removeFirst

优先 ArrayDeque 而非过时的 Stack 或作栈用的 LinkedList(见 jva-collections)。

Iterator 与 fail-fast

List<String> slugs = new ArrayList<>(List.of("a", "b", "c"));
Iterator<String> it = slugs.iterator();
while (it.hasNext()) {
    String s = it.next();
    if ("b".equals(s)) it.remove(); // 安全删除
}
// slugs.remove("b") 在 for-each 中会 ConcurrentModificationException
  • fail-fast:迭代中结构被外部修改 → 快速失败
  • 删除用 Iterator.remove() 或 removeIf
  • 并发场景用 ConcurrentHashMap 等(见 jvc-concurrency)

练习

  • 用 LinkedHashMap 实现容量 3 的简单 LRU 缓存
  • 用 ArrayDeque 判断括号字符串是否匹配
  • 对比 Map.get 与 Map.getOrDefault 处理缺失 key

小结

Map 管关联,Deque 兼队列与栈,Iterator 安全删元素。 下一课 Lambda 与 Stream 声明式处理集合。

加载本节练习…
← 上一课抽象与接口下一课 →Lambda 与 Stream