📅  最后修改于: 2023-12-03 14:42:50.322000             🧑  作者: Mango
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}