NavigableMap接口源码分析
java.util.NavigableMap 接口直接继承自 java.util.SortedMap 接口。

一、NavigableMap特点或规范
NavigableMap 使用可导航的方法扩展了 SortedMap,返回给定搜索目标的最接近匹配结果。
NavigableMap 定义了以下方法来根据 key 查询,如果不存在该 key,则返回 null:
| 操作 | 小于 | 小于等于 | 大于等于 | 大于 | 
|---|---|---|---|---|
| 查询满足条件的 Map.Entry | lowerEntry(K) | 
floorEntry(K) | 
ceilingEntry(K) | 
higherEntry(K) | 
| 查询满足条件的 key | lowerKey(K) | 
floorKey(K) | 
ceilingKey(K) | 
higherKey(K) | 
有序性
- 可以按 升序 或 降序 key 访问或遍历 NavigableMap。
 descendingMap()方法返回 Map 的反序视图。navigableKeySet()方法返回 key 的 升序 视图descendingKeySet()方法返回 key 的 降序 视图- 升序操作及视图的性能 可能比 降序操作及视图的性能 更快。
 
子Map视图
子 Map 视图继承自 SortedMap,两种实现不同之处在于 是否可接受包含下限和上限参数。NavigableMap 返回的子视图也都必须实现 NavigableMap 接口。
| 返回值类型 | fromKey -> toKey | head -> toKey | fromKey -> tail | 
|---|---|---|---|
| SortedMap<K,V> | subMap(K fromKey, K toKey) | 
headMap(K toKey) | 
tailMap(K fromKey) | 
| NavigableMap<K,V> | subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) | 
headMap(K toKey, boolean inclusive) | 
tailMap(K fromKey, boolean inclusive) | 
双端操作
NavigableMap 支持双端操作,返回 Map.Entry<K, V> ,如果不存在则返回 null。
| 起始位置 | 仅获取 | 获取并删除 | 
|---|---|---|
| 头 | firstEntry() | 
pollFirstEntry() | 
| 尾 | lastEntry() | 
pollLastEntry() | 
二、方法描述
2.1 NavigableMap中的方法
1  |  | 
2.2 继承自SortedMap的方法
1  |  | 
NavigableMap接口源码分析
      https://cuilan.github.io/2019/08/28/java/util/NavigableMap-source-analysis/