TreeMap默认按键的自然顺序排序,要求键类型实现Comparable接口;Integer按数值、String按字典序升序排列,自定义类需重写compareTo,不支持null键,否则抛异常。

TreeMap 默认就按照键的自然顺序排序,只要键类型实现了 Comparable 接口(比如 String、Integer、Long 等),直接 new 一个 TreeMap 就行,无需额外配置。
确保键类型支持自然排序
Java 中常见内置类型如 Integer、String、Character、Double 等都已实现 Comparable,可以直接用:
- Integer 键按数值大小升序排列
- String 键按字典序(Unicode 顺序)升序排列
- 自定义类作键时,必须实现 Comparable 并重写 compareTo 方法,否则运行时报 ClassCastException
创建并使用默认 TreeMap
代码示例(String 键):
TreeMap<String, Integer> map = new TreeMap<>();
map.put("banana", 2);
map.put("apple", 1);
map.put("cherry", 3);
// 输出顺序:apple=1, banana=2, cherry=3
map.forEach((k, v) -> System.out.println(k + "=" + v));
插入顺序不影响遍历结果,TreeMap 始终按键的自然顺序维护内部红黑树结构。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
立即学习“Java免费学习笔记(深入)”;
处理 null 键或不可比较的键
TreeMap 不允许 null 键(会抛 NullPointerException);若键未实现 Comparable 或类型不一致(如混用 String 和 Integer),插入时会抛 ClassCastException。
- 避免插入 null 键
- 确保所有键是同一可比较类型
- 如需支持 null 或自定义排序逻辑,改用带 Comparator 的构造方法
验证排序是否生效
可通过 keySet()、entrySet() 或 values() 遍历确认顺序。例如:
System.out.println(map.keySet()); // [apple, banana, cherry] System.out.println(map.firstKey()); // apple System.out.println(map.lastKey()); // cherry
firstKey() 和 lastKey() 能快速获取最小/最大键,这也是自然排序可用的直接体现。

















