Java集合框架的NavigableMap
接口提供了在地图条目之间导航的功能。
它被视为SortedMap的一种。
实现NavigableMap的类
由于NavigableMap
是一个接口,因此我们无法从中创建对象。
为了使用NavigableMap
接口的功能,我们需要使用实现NavigableMap
的TreeMap
类。
如何使用NavigableMap?
在Java中,我们必须导入java.util.NavigableMap
包才能使用NavigableMap
。导入包后,将按照以下方法创建可导航的地图。
// NavigableMap implementation by TreeMap class
NavigableMap numbers = new TreeMap<>();
在上面的代码中,我们创建了一个名为TreeMap
类的数字的可导航地图。
这里,
- 键 -用于关联地图中每个元素(值)的唯一标识符
- 值 -地图中与按键相关联的元素
NavigableMap的方法
NavigableMap
被视为SortedMap
。这是因为NavigableMap
扩展了SortedMap
接口。
因此,所有的SortedMap
方法在NavigableMap
中也可用。要了解如何在SortedMap
中定义这些方法,请访问Java SortedMap。
但是,在NavigableMap
, SortedMap
某些方法( headMap()
, tailMap()
和subMap()
)定义不同。
让我们看看如何在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
。
如果将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) {
// Creating NavigableMap using TreeMap
NavigableMap numbers = new TreeMap<>();
// Insert elements to map
numbers.put("Two", 2);
numbers.put("One", 1);
numbers.put("Three", 3);
System.out.println("NavigableMap: " + numbers);
// Access the first entry of the map
System.out.println("First Entry: " + numbers.firstEntry());
// Access the last entry of the map
System.out.println("Last Entry: " + numbers.lastEntry());
// Remove the first entry from the map
System.out.println("Removed First Entry: " + numbers.pollFirstEntry());
// Remove the last entry from the map
System.out.println("Removed Last Entry: " + numbers.pollLastEntry());
}
}
import java.util.NavigableMap;
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
// Creating NavigableMap using TreeMap
NavigableMap numbers = new TreeMap<>();
// Insert elements to map
numbers.put("Two", 2);
numbers.put("One", 1);
numbers.put("Three", 3);
System.out.println("NavigableMap: " + numbers);
// Access the first entry of the map
System.out.println("First Entry: " + numbers.firstEntry());
// Access the last entry of the map
System.out.println("Last Entry: " + numbers.lastEntry());
// Remove the first entry from the map
System.out.println("Removed First Entry: " + numbers.pollFirstEntry());
// Remove the last entry from the map
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
类实现该接口。