Java NavigableMap 接口

NavigableMap 扩展了 SortedMap 接口,提供几个根据键值导航的方法。在本教程中,我们将通过示例学习 Java NavigableMap 接口及其用法。

在本教程中,我们将通过示例学习 Java NavigableMap 接口及其用法。

Java 集合框架的 NavigableMap 扩展了 SortedMap 接口,提供了几个导航方法报告与搜索目标键值最接近的匹配。

TreeMap 类是 NavigableMap 接口的一个实现类,我们可以使用 TreeMap 类构造 NavigableMap 对象。

Java TreeMap 类实现了 Java NavigableMap 接口。

在程序中导入 java.util.NavigableMap 类和 java.util.TreeMap 就可以创建对象了:

NavigableMap<Key, Value> numbers = new TreeMap<>();

我们使用 TreeMap 类创建了一个名为 numbersNavigableMap 对象。

这里,

  • Key - SortedMap 中键的数据类型
  • Value - SortedMap 中值的数据类型

NavigableMap 接口扩展了 SortedMap 接口,拥有 SortedMap 的所有行为。

要了解如何使用 SortedMap 的方法,请访问 Java SortedMap

但是, NavigableMap 重载了 SortedMap 中的一些方法,比如: headMap() , tailMap()subMap()

让我们看看 NavigableMap 中的这些方法。

headMap(toKey, inclusive);

headMap(toKey, inclusive) 方法返回由键位于 toKey 所在条目之前的所有条目组成的 NavigableMap 对象。

inclusive 参数如果为 false,该方法返回的 Map 中不包括 toKey 所在的条目;如果为 true,该方法返回的集合中包括 toKey 所在的条目。

tailMap(fromKey, inclusive)

tailMap(fromKey, inclusive) 方法返回由键位于 fromKey 所在条目之后的所有条目组成的 NavigableMap 对象。

inclusive 参数如果为 false,该方法返回的 Map 中不包括 fromKey 所在的条目;如果为 true,该方法返回的集合中包括 fromKey 所在的条目。

subMap(fromKey, fromInclusive, toKey, toInclusive)

subMap(fromKey, fromInclusive, toKey, toInclusive) 方法返回由键位于 fromKey 条目和 toKey 条目之间的所有条目组成的 NavigableMap 对象。

如果 fromInclusivetrue,则返回的 Map 中包括 fromKey 所在的条目, 为 false 则不包括 fromKey 所在的条目。

如果 toInclusivetrue,则返回的 Map 中包括 toKey 所在的条目, 为 false 则不包括 toKey 所在的条目。

其他方法

NavigableMap 提供了可用于定位图的条目的各种方法。

  • descendingMap() - 返回一个与原 NavigableMap 中条目的逆序视图
  • descendingKeySet() - 返回由 NavigableMap 中键按逆序组成的 NavigableSet
  • ceilingEntry() - 返回键大于或等于指定键的所有条目中键最小的条目
  • ceilingKey() - 返回大于或等于指定键的键中的最小的键
  • floorEntry() - 返回键小于或等于指定键的所有条目中键最大的条目
  • floorKey() - 返回小于或等于指定键的键中的最大的键
  • higherEntry() - 返回键大于指定键的所有条目中键最小的条目
  • higherKey() - 返回大于指定键的键中最小的键
  • lowerEntry() - 返回键小于指定键的所有条目中键最大的条目
  • lowerKey() - 返回那些小于指定键的键中的最大的键
  • firstEntry() - 返回 NavigableMap 的第一个条目(具有最小键的条目)
  • lastEntry() - 返回 NavigableMap 的最后一个条目(具有最大键的条目)
  • pollFirstEntry() - 返回并删除 NavigableMap 的第一个条目
  • pollLastEntry() - 返回并删除 NavigableMap 的最后一个条目
import java.util.NavigableMap;
import java.util.TreeMap;

public class Main {

  public static void main(String[] args) {
    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("第一个元素: " + numbers.firstEntry());

    System.out.println("最后的元素: " + numbers.lastEntry());

    System.out.println("删除第一个元素: " + numbers.pollFirstEntry());

    // Remove the last entry from the map
    System.out.println("删除最后的元素: " + numbers.pollLastEntry());
  }
}

输出

NavigableMap: {One=1, Three=3, Two=2}
第一个元素: One=1
最后的元素: Two=2
删除第一个元素: One=1
删除最后的元素: Two=2

现在我们了解了 NavigableMap 接口,我们将在下一个教程中详细了解它实现: TreeMap