Java NavigableMap 接口
- 导航功能:
NavigableMap
接口在 Java 集合框架中提供了映射条目之间导航的功能,扩展自SortedMap
。 - 主要实现类:要使用
NavigableMap
接口的功能,需通过TreeMap
类,它是NavigableMap
接口的主要实现。 - 核心方法:
NavigableMap
提供了多种方法来操作映射,包括headMap()
,tailMap()
,subMap()
以及用于定位条目的firstEntry()
,lastEntry()
,pollFirstEntry()
等。
Java 集合框架中的 NavigableMap
接口提供了在映射条目之间导航的功能。
它被视为 SortedMap 的一种类型。
实现 NavigableMap 的类
由于 NavigableMap
是一个接口,我们不能从中创建对象。
为了使用 NavigableMap
接口的功能,我们需要使用实现了 NavigableMap
的 TreeMap
类。
如何使用 NavigableMap?
在 Java 中,我们必须导入 java.util.NavigableMap
包才能使用 NavigableMap
。一旦我们导入了包,以下是创建可导航映射的方式。
// TreeMap 类实现的 NavigableMap
NavigableMap<Key, Value> numbers = new TreeMap<>();
在上面的代码中,我们创建了一个名为 numbers
的可导航映射,该映射属于 TreeMap
类。
这里,
Key
- 用于将每个元素(值)与映射中的元素相关联的唯一标识符Value
- 由键在映射中关联的元素
NavigableMap 的方法
NavigableMap
被视为 SortedMap
的一种类型。这是因为 NavigableMap
扩展了 SortedMap
接口。
因此,所有 SortedMap
的方法也可用于 NavigableMap
。要了解这些方法在 SortedMap
中是如何定义的,请访问 Java SortedMap。
然而,SortedMap
的某些方法(headMap()
、tailMap()
和 subMap()
)在 NavigableMap
中的定义有所不同。
让我们看看这些方法在 NavigableMap
中是如何定义的。
headMap(key, booleanValue)
headMap()
方法返回与指定 key
(作为参数传递)之前的所有键相关联的可导航映射的所有条目。
booleanValue
是一个可选参数。其默认值为 false
。
如果将 true
作为 booleanValue
传递,则该方法返回与指定 key
之前的所有键相关联的所有条目,包括与指定 key
相关联的条目。
tailMap(key, booleanValue)
tailMap()
方法返回与指定 key
(作为参数传递)之后的所有键相关联的可导航映射的所有条目,包括与指定 key
相关联的条目。
booleanValue
是一个可选参数。其默认值为 true
。
如果将 false
作为 booleanValue
传递,则该方法返回与指定 key
之后的所有键相关联的所有条目,但不包括与指定 key
相关联的条目。
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() - 返回键小于或等于指定键的所有键中最大的键
- higherEntry() - 返回键大于指定键的所有条目中键最小的条目
- higherKey() - 返回键大于指定键的所有键中最小的键
- lowerEntry() - 返回键小于指定键的所有条目中键最大的条目
- lowerKey() - 返回键小于指定键的所有键中最大的键
- firstEntry() - 返回映射的第一个条目(键最小的条目)
- lastEntry() - 返回映射的最后一个条目(键最大的条目)
- pollFirstEntry() - 返回并移除映射的第一个条目
- pollLastEntry() - 返回并移除映射的最后一个条目
要了解更多信息,请访问 Java NavigableMap(官方 Java 文档)。
在 TreeMap 类中实现 NavigableMap
import java.util.NavigableMap;
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
// 使用 TreeMap 创建 NavigableMap
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("First Entry: " + numbers.firstEntry());
// 访问映射的最后一个条目
System.out.println("Last Entry: " + numbers.lastEntry());
// 从映射中移除第一个条目
System.out.println("Removed First Entry: " + numbers.pollFirstEntry());
// 从映射中移除最后一个条目
System.out.println("Removed Last Entry: " + numbers.pollLastEntry());
}
}
输出
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。
现在我们了解了 NavigableMap
接口,下一篇教程将详细介绍如何使用 TreeMap
类来实现它。