NavigableMap 是 SortedMap 的扩展接口,支持高效范围查询和邻近元素查找;提供 subMap(含 JDK12+ 精确边界控制)、headMap、tailMap 及 ceilingEntry、floorKey 等导航方法,底层 TreeMap 实现为 O(log n) 时间复杂度。

Java 中 NavigableMap 是 SortedMap 的扩展接口,专为高效范围查询和邻近元素查找而设计。它不仅支持按自然顺序或自定义顺序排序,还提供了诸如 subMap、headMap、tailMap 等方法,能精准截取键的连续区间,且返回的子视图仍保持可导航性(即继续调用 floorEntry、higherKey 等)。
subMap 是最常用的范围查询方法,支持灵活指定边界是否包含:
subMap(fromKey, fromInclusive, toKey, toInclusive):JDK 12+ 引入,明确控制两端是否包含(推荐新项目使用)subMap(fromKey, toKey):等价于 subMap(fromKey, true, toKey, false),即左闭右开例如,查成绩在 [85, 95) 区间的学生:
NavigableMap当只需“小于某值”或“大于等于某值”的全部条目时,这两个方法更简洁高效:
立即学习“Java免费学习笔记(深入)”;
headMap(toKey, inclusive) 返回所有键 toKey(或 ≤,取决于 inclusive)的映射tailMap(fromKey, inclusive) 返回所有键 ≥ fromKey(或 >,若 inclusive=false)的映射注意:它们返回的是原 map 的**实时视图**,修改子视图会同步影响原 map。
除了静态切片,NavigableMap 还提供基于比较的动态定位能力:
ceilingEntry(key):返回最小的键 ≥ key 的键值对;无则返回 nullfloorKey(key):返回最大的键 ≤ key 的键;无则返回 nullhigherKey(key):返回严格大于 key 的最小键lowerEntry(key):返回严格小于 key 的最大键值对这些方法常用于“找最近的匹配项”,比如查离目标分数最近的已录入成绩。
实际开发中常用实现类是 TreeMap,它基于红黑树,所有导航操作(含范围查询)时间复杂度均为 O(log n)。需注意:
Comparable 或传入 Comparator),否则运行时报 ClassCastException
putAll,但支持 put、remove —— 本质是受控代理new TreeMap(range)
基本上就这些。用对方法,范围查询既安全又高效。
以上就是Java里如何使用NavigableMap完成范围查询_Java可导航Map机制解析的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号