📜  Java中的 NavigableMap 接口与示例(1)

📅  最后修改于: 2023-12-03 14:42:50.322000             🧑  作者: Mango

Java中的 NavigableMap 接口与示例

NavigableMap 接口是 SortedMap 接口的子接口,它定义了一组与导航和搜索相关的方法,用于操作 TreeMap 等基于排序的映射 (SortedMap)。

方法

NavigableMap 接口中有很多方法,这里介绍一部分常用的方法:

  • NavigableMap<K,V> descendingMap() - 返回与该 Map 相符的降序排列的 NavigableMap。
  • NavigableSet<K> descendingKeySet() - 返回与该 Map 相符的键的集合的降序排列的 NavigableSet。
  • Map.Entry<K,V> firstEntry() - 返回该 Map 最小键值所对应的条目 (entry)。如果 Map 为空,则返回 null。
  • Map.Entry<K,V> lastEntry() - 返回该 Map 最大键值所对应的条目。如果 Map 为空,则返回 null。
  • NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) - 返回一个新的 NavigableMap,其键值范围从 fromKey(包括或不包括,取决于 fromInclusive)到 toKey(包括或不包括,取决于 toInclusive)。
  • NavigableMap<K,V> headMap(K toKey, boolean inclusive) - 返回由此 Map 获取的键小于等于 toKey 的部分视图。
  • NavigableMap<K,V> tailMap(K fromKey, boolean inclusive) - 返回由此 Map 获取的键大于等于 fromKey 的部分视图。

任何实现了 NavigableMap 接口的类,都必须实现这些方法。

示例

下面是一个使用 NavigableMap 接口的示例:

import java.util.NavigableMap;
import java.util.TreeMap;

public class ExampleNavigableMap {

    public static void main(String[] args) {

        NavigableMap<Integer, String> map = new TreeMap<>();

        // 添加元素
        map.put(1, "one");
        map.put(3, "three");
        map.put(2, "two");
        map.put(5, "five");
        map.put(4, "four");

        // 获取最小的键值和值
        System.out.println("First entry: " + map.firstEntry());

        // 获取最大的键值和值
        System.out.println("Last entry: " + map.lastEntry());

        // 获取大于等于键值为2的子视图
        System.out.println("Sub map from 2: " + map.tailMap(2, true));

        // 获取小于键值为4的子视图
        System.out.println("Sub map to 4: " + map.headMap(4, true));

        // 获取键值在[fromKey, toKey)范围内的子视图
        System.out.println("Sub map from 2 to 4: " + map.subMap(2, true, 4, true));

        // 获取键的降序集合
        System.out.println("Descending key set: " + map.descendingKeySet());

        // 获取降序的 Map 视图
        System.out.println("Descending map: " + map.descendingMap());
    }
}

执行结果如下:

First entry: 1=one
Last entry: 5=five
Sub map from 2: {2=two, 3=three, 4=four, 5=five}
Sub map to 4: {1=one, 2=two, 3=three, 4=four}
Sub map from 2 to 4: {2=two, 3=three, 4=four}
Descending key set: [5, 4, 3, 2, 1]
Descending map: {5=five, 4=four, 3=three, 2=two, 1=one}