# Java NavigableMap 接口 > 原文: [https://www.programiz.com/java-programming/navigablemap](https://www.programiz.com/java-programming/navigablemap) #### 在本教程中,我们将通过一个示例学习 Java NavigableMap 接口及其方法。 Java 集合框架的`NavigableMap`接口提供了在地图条目之间导航的功能。 它被视为 [SortedMap](/java-programming/sortedmap "Java SortedMap Interface") 的一种。 * * * ## 实现 NavigableMap 的类 由于`NavigableMap`是一个接口,因此我们无法从中创建对象。 为了使用`NavigableMap`接口的功能,我们需要使用实现`NavigableMap`的`TreeMap`类。 ![Java TreeMap class implements the Java NavigableMap interface.](img/c185c722105f53b081975dd48f704330.png) * * * ## 如何使用 NavigableMap? 在 Java 中,我们必须导入`java.util.NavigableMap`包才能使用`NavigableMap`。 导入包后,将按照以下方法创建可导航的地图。 ```java // NavigableMap implementation by TreeMap class NavigableMap numbers = new TreeMap<>(); ``` 在上面的代码中,我们创建了一个名为`TreeMap`类的`number`的可导航地图。 这里, * `键`-用于关联地图中每个元素(值)的唯一标识符 * `值`-地图中与按键相关联的元素 * * * ## NavigableMap 的方法 `NavigableMap`被认为是`SortedMap`的一种。 这是因为`NavigableMap`扩展了`SortedMap`接口。 因此,所有`SortedMap`方法在`NavigableMap`中也可用。 要了解`SortedMap`中如何定义这些方法,请访问 [Java SortedMap](/java-programming/sortedmap) 。 但是,`SortedMap`(`headMap()`,`tailMap()`和`subMap()`)中的某些方法在`NavigableMap`中定义不同。 让我们看看如何在`NavigableMap`中定义这些方法。 * * * ### headMap(key,booleanValue) `headMap()`方法返回在指定的`键`(作为参数传递)之前与所有这些键关联的可导航映射的所有条目。 `布尔值`是可选参数。 其默认值为`false`。 如果将`true`作为`布尔值`传递,则该方法返回与所有在指定的`密钥`之前的所有密钥相关联的条目,包括与指定的`密钥[`。 * * * ### tailMap(key,booleanValue) `tailMap()`方法返回与指定键`键`(作为参数传递)之后的所有那些键相关联的可导航地图的所有条目,包括与指定`键`相关的条目 。 `布尔值`是可选参数。 其默认值为`true`。 如果`false`作为`布尔值`传递,则该方法将返回指定的`密钥`之后与这些密钥相关的所有条目,而不包括与指定的`密钥[`。 * * * ### subMap(k1,bv1,k2,bv2) `subMap()`方法返回与`k1`和`k2`之间的键相关联的所有条目,包括与`k1`相关联的条目。 `bv1`和`bv2`是可选参数。`bv1`的默认值为 true,`bv2`的默认值为`false`。 如果`false`作为`bv1`传递,则该方法返回与`k1`和`k2`之间的键相关联的所有条目,而不包括与`相关联的条目 k1`。 如果`true`作为`bv2`传递,则该方法返回与`k1`和`k2`之间的键相关联的所有条目,包括与`k1 相关联的条目`。 * * * ## 其他方法 `NavigableMap`提供了各种可用于定位地图条目的方法。 * **DescendingMap()**-反转地图中的条目顺序 * **DescendingKeyMap()**-反转地图中按键的顺序 * **ceilingEntry()**-返回其键大于或等于指定键的所有条目中键最低的条目 * **ceilingKey()**-返回大于或等于指定键的那些键中的最低键 * **floorEntry()**-返回其键小于或等于指定键的所有条目中具有最高键的条目 * **floorKey()**-返回小于或等于指定键的那些键中的最高键 * **upperEntry()**-返回其键大于指定键的所有条目中键最低的条目 * **upperKey()**-返回大于指定键的那些键中的最低键 * **lowerEntry()**-返回其键小于指定键的所有条目中具有最高键的条目 * **lowerKey()**-返回小于指定键的那些键中的最高键 * **firstEntry()**-返回地图的第一个条目(具有最低键的条目) * **lastEntry()**-返回地图的最后一个条目(具有最高键的条目) * **pollFirstEntry()**-返回并删除地图的第一个条目 * **pollLastEntry()**-返回并删除地图的最后一个条目 要了解更多信息,请访问 [Java NavigableMap(Java 官方文档)](https://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html)。 * * * ## TreeMap 类中 NavigableMap 的实现 ```java import java.util.NavigableMap; import java.util.TreeMap; class Main { public static void main(String[] args) { // Creating NavigableMap using TreeMap NavigableMap numbers = new TreeMap<>(); // Insert elements to map numbers.put("Two", 2); numbers.put("One", 1); numbers.put("Three", 3); System.out.println("NavigableMap: " + numbers); // Access the first entry of the map System.out.println("First Entry: " + numbers.firstEntry()); // Access the last entry of the map System.out.println("Last Entry: " + numbers.lastEntry()); // Remove the first entry from the map System.out.println("Removed First Entry: " + numbers.pollFirstEntry()); // Remove the last entry from the map System.out.println("Removed Last Entry: " + numbers.pollLastEntry()); } } ``` **输出** ```java NavigableMap: {One=1, Three=3, Two=2} First Entry: One=1 Last Entry: Two=2 Removed First Entry: One=1 Removed Last Entry: Two=2 ``` 要了解有关`TreeMap`的更多信息,请访问 [Java TreeMap](/java-programming/treemap "Java TreeMap class") 。 * * * 现在我们知道了`NavigableMap`接口,我们将在下一个教程中详细了解如何使用`TreeMap`类实现该接口。