Skip to content

Java NavigableMap 接口

Java 集合框架中的 NavigableMap 接口提供了在地图条目之间导航的功能。

它被视为 SortedMap 的一种类型。


实现 NavigableMap 的类

由于 NavigableMap 是一个接口,我们无法从中创建对象。

为了使用 NavigableMap 接口的功能,我们需要使用实现 NavigableMapTreeMap 类。

Java TreeMap 类实现了 Java NavigableMap 接口。


如何使用 NavigableMap?

在 Java 中,我们必须导入 java.util.NavigableMap 包来使用 NavigableMap。一旦导入了该包,我们就可以创建一个可导航的地图。

// 使用 TreeMap 类实现 NavigableMap
NavigableMap<Key, Value> numbers = new TreeMap<>();

在上面的代码中,我们创建了一个名为 numbers 的可导航映射,其底层实现是 TreeMap 类。

这里,

  • Key - 用于将每个元素(值)与地图中的键关联的唯一标识符
  • Value - 通过键在地图中关联的元素

NavigableMap 被认为是 SortedMap 的一种类型。这是因为 NavigableMap 扩展了 SortedMap 接口。

因此,所有的 SortedMap 方法在 NavigableMap 中也可用。要了解这些方法在 SortedMap 中如何定义,请访问 Java SortedMap

然而,SortedMap 的一些方法(headMap()tailMap()subMap())在 NavigableMap 中的定义不同。

我们来看看这些方法在 NavigableMap 中的定义。


headMap(key, booleanValue)

headMap() 方法返回与指定键之前的所有键关联的可导航地图的所有条目(作为参数传递的键)。

booleanValue 是一个可选参数。它的默认值是 false

如果将 true 作为 booleanValue 传递,则该方法返回与指定键之前的所有键关联的所有条目,包括与指定键关联的条目。


tailMap(key, booleanValue)

tailMap() 方法返回与指定键之后的所有键关联的可导航地图的所有条目(作为参数传递的键),包括与指定键关联的条目。

booleanValue 是一个可选参数。它的默认值是 true

如果将 false 作为 booleanValue 传递,则该方法返回与指定键之后的所有键关联的所有条目,不包括与指定键关联的条目。


subMap(k1, bv1, k2, bv2)

subMap() 方法返回在 k1 和 k2 之间的键关联的所有条目,包括与 k1 关联的条目。

bv1 和 bv2 是可选参数。bv1 的默认值为 true,bv2 的默认值为 false

如果将 bv1 设置为 false,则该方法返回在 k1 和 k2 之间的键关联的所有条目,不包括与 k1 关联的条目。

如果将 bv2 设置为 true,则该方法返回在 k1 和 k2 之间的键关联的所有条目,包括与 k1 关联的条目。


其他方法

NavigableMap 提供了各种方法,用于定位映射的条目。

  • descendingMap() - 反转映射中条目的顺序
  • descendingKeyMap() - 反转地图中键的顺序
  • ceilingEntry() - 返回所有键大