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综合练习

综合练习

Stream + 单元测试小模块。

40 分钟

综合练习

把本 track 串起来:用 Map + Stream 实现「课时目录」模块,补全单元测试与简单 CLI 导出。完成后进入 java-advanced-essentials 或 spring-boot-essentials。

学习目标

  • 独立完成一次「集合 + Stream + 测试」的小项目
  • 对照 jvc-intro 至 jvc-test 的知识点自检
  • 规划进阶 Java 或 Spring Boot 的下一步

任务:LessonCatalog 模块

在 java-practice 的 Track / Lesson 思路上扩展:

1. 领域模型

public final class Lesson {
    private final String slug;
    private final String title;
    private final int orderIndex;

    public Lesson(String slug, String title, int orderIndex) { /* 校验 */ }
    public String slug() { return slug; }
    public String title() { return title; }
    public int orderIndex() { return orderIndex; }
}

2. 用 Map 索引 + Stream 查询

public class LessonCatalog {
    private final Map<String, Lesson> bySlug = new HashMap<>();

    public void add(Lesson lesson) {
        if (bySlug.containsKey(lesson.slug())) {
            throw new IllegalArgumentException("duplicate: " + lesson.slug());
        }
        bySlug.put(lesson.slug(), lesson);
    }

    public List<Lesson> sortedLessons() {
        return bySlug.values().stream()
            .sorted(Comparator.comparingInt(Lesson::orderIndex))
            .toList();
    }

    public List<Lesson> filterByPrefix(String prefix) {
        return bySlug.values().stream()
            .filter(l -> l.slug().startsWith(prefix))
            .toList();
    }
}

3. 导出 Markdown 清单(I/O)

用 jvc-io 的 Files.writeString 把 sortedLessons() 写成 - [slug](slug) title 列表。

4. 可选:虚拟线程批量校验

模拟对多个 slug 做 HTTP HEAD(可 stub),用 jvc-concurrency 的虚拟线程 executor 并发检查。

测试要求

  • JUnit 5:至少 5 个用例(重复 slug、排序、前缀过滤、空目录、导出文件非空)
  • Mockito 可选:mock 外部 slug 校验接口
  • mvn test 或 ./gradlew test 全绿(见 jvc-build)

自检清单

  • 能口头解释 HashMap vs List 在本任务中的分工
  • Stream 管道里有没有 共享可变状态
  • 测试是否覆盖 异常路径(duplicate、非法参数)
  • 说出一个适合交给 jva-collections 扩展的需求(如 Set 去重标签)

进阶路线

方向链接
集合选型、Record、并发java-advanced-essentials
Web API + JPAspring-boot-essentials
语言基础复习java-fundamentals
测试体系testing-essentials

小结

Map 索引、Stream 查询、Files 导出、JUnit 守回归——核心 Java 的合格小项目不过如此。 本 track 完结;下一步进阶语法或把目录挂到 Spring Boot REST API。

加载本节练习…
← 上一课测试与 JUnit