渐进式编程课
Java 目录
第 20 课2026.09.28

检查替换课程键后,当前 Map 实际保存了哪些课程。

第 20 课:遍历 Map 中的课程键

  • 日期:2026-09-28
  • 课程序号:第 20 课
  • 知识点:Map.keySet()

用途或适用场景

检查替换课程键后,当前 Map 实际保存了哪些课程。

核心概念

keySet() 提供当前键的集合视图;HashMap 不保证遍历顺序,本例只有一条记录。

最小代码或操作示例

java
public class Main {
  record Lesson(String title, int minutes) {}
  public static void main(String[] args) {
    var notes = new java.util.HashMap<Lesson, String>();
    var oldKey = new Lesson("Java", 5);
    notes.put(oldKey, "已读");
    var note = notes.remove(oldKey);
    var newKey = new Lesson(oldKey.title(), 10);
    notes.put(newKey, note);
    System.out.println(notes.size()); // 1
    for (var key : notes.keySet()) System.out.println(key.title()); // Java
  }
}

3~5 分钟练习

在遍历前加入 notes.put(new Lesson("Kotlin", 8), "待读"),观察输出。

参考答案

size() 变成 2;遍历会显示 Java 与 Kotlin,但不能依赖两者顺序。

与上一课的联系

沿用第 19 课的 Lesson、notes、键替换及 size();本课只新增 keySet() 遍历键;下一课可通过每个键读取对应备注。

时效校验

时效校验:2026-09-28(已打开 Java SE 27 Map API 核对 keySet/size 与 HashMap 顺序说明;record 正式版需 Java 16+,未见废弃标记)。

官方参考