精通 Java NavigableMap:特性、方法与 TreeMap 实现
Java NavigableMap 接口
本教程讲解 Java NavigableMap 接口、其核心方法及如何配合 TreeMap 使用。
NavigableMap 接口属于 Java 集合框架,提供跨 Map 条目的导航能力。它是 SortedMap 的特化,扩展其功能,支持高效的双向遍历。
实现 NavigableMap 的类
因 NavigableMap 是接口,无法直接实例化。主要实现是 TreeMap 类,提供自平衡二叉搜索树结构,维护键的排序顺序。

如何使用 NavigableMap
先导入接口:
import java.util.NavigableMap;
import java.util.TreeMap;
再创建实例:
// TreeMap 实现的 NavigableMap
NavigableMap<Key, Value> numbers = new TreeMap<>();
上述代码中,numbers 是存储键值对的 TreeMap。Key 为唯一标识符,Value 为关联数据。
NavigableMap 的核心方法
所有 SortedMap 操作均可用,但部分被重写以提供更精细控制。关键方法包括:
headMap(key, booleanInclusive)
返回键严格小于 key 的映射视图(booleanInclusive 为 false,默认)。若 booleanInclusive 为 true,返回视图包含 key 的条目。
tailMap(key, booleanInclusive)
返回键大于或等于 key 的映射视图(booleanInclusive 为 true,默认)。传 false 则排除 key 条目。
subMap(fromKey, fromInclusive, toKey, toInclusive)
提供 fromKey 与 toKey 之间的视图。默认 fromInclusive = true、toInclusive = false。调整标志控制边界键是否包含在结果 Map 中。
额外导航方法
- descendingMap() — 反转条目顺序。
- descendingKeySet() — 反转键视图。
- ceilingEntry(key) — 键 ≥ 给定键的最低条目。
- ceilingKey(key) — 键 ≥ 给定键的最低键。
- floorEntry(key) — 键 ≤ 给定键的最高条目。
- floorKey(key) — 键 ≤ 给定键的最高键。
- higherEntry(key) — 键 > 给定键的最低条目。
- higherKey(key) — 键 > 给定键的最低键。
- lowerEntry(key) — 键 < 给定键的最高条目。
- lowerKey(key) — 键 < 给定键的最高键。
- firstEntry() — 最小键的条目。
- lastEntry() — 最大键的条目。
- pollFirstEntry() — 获取并移除首条目。
- pollLastEntry() — 获取并移除尾条目。
官方规范请见 Java NavigableMap 文档。
TreeMap 实现示例
import java.util.NavigableMap;
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
// 使用 TreeMap 创建 NavigableMap
NavigableMap<String, Integer> numbers = new TreeMap<>();
// 插入元素
numbers.put("Two", 2);
numbers.put("One", 1);
numbers.put("Three", 3);
System.out.println("NavigableMap: " + numbers);
// 获取首条目
System.out.println("First Entry: " + numbers.firstEntry());
// 获取尾条目
System.out.println("Last Entry: " + numbers.lastEntry());
// 移除首条目
System.out.println("移除首条目: " + numbers.pollFirstEntry());
// 移除尾条目
System.out.println("移除尾条目: " + numbers.pollLastEntry());
}
}
输出
NavigableMap: {One=1, Three=3, Two=2}
First Entry: One=1
Last Entry: Two=2
移除首条目: One=1
移除尾条目: Two=2
更多 TreeMap 信息请参阅 Java TreeMap 文档。
掌握 NavigableMap 接口及其 TreeMap 实现后,你能为 Java 应用构建高效、有序的数据结构。
java
- Java日志最佳实践:三大核心原则构建可观测的可靠代码
- 掌握 C# 接口:定义、实现与实战场景全解析
- 精通 Java 运算符:类型、语法与实战示例
- 精通 Java super 关键字:高级用法与实战示例
- 精通 Java 接口:概念、实现与最佳实践
- 精通 Java Try-With-Resources:自动资源管理详解
- Java Collection 接口:核心概念与常用方法
- 掌握 Java NavigableSet 接口:导航、排序与实战示例
- 掌握 Java Lambda 表达式:从基础到 Stream API 实战
- Java 接口 vs 抽象类:如何选择合适的抽象方式
- Java 接口全解析:定义契约、默认方法、多实现与标记接口
- Java 9 接口私有方法:增强封装与代码复用