NavigableMap接口在Java中的使用示例
Java中的NavigableMap接口是对于SortedMap接口的扩展,它提供了一些额外的导航方法和子Map范围操作。NavigableMap接口有四个实现类:TreeMap、ConcurrentSkipListMap、ConcurrentSkipListMap等,其中以TreeMap实现类最为常用。
下面我们来看看NavigableMap接口的使用示例。
创建NavigableMap对象
首先我们需要创建NavigableMap对象。下面的代码展示了如何创建一个TreeMap对象:
NavigableMap<String, Integer> map = new TreeMap<>();
向NavigableMap中添加元素
我们可以使用put()方法向NavigableMap中添加元素。下面的代码展示了如何向NavigableMap中添加元素:
map.put("A", 5);
map.put("C", 2);
map.put("B", 3);
map.put("E", 1);
map.put("D", 4);
获取NavigableMap的所有key和value
我们可以使用keySet()方法获得NavigableMap所有的键,使用values()方法获取NavigableMap所有的值。下面的代码展示了如何获取NavigableMap的所有key和value:
Set<String> keys = map.keySet();
System.out.println("NavigableMap Key Set: " + keys);
Collection<Integer> values = map.values();
System.out.println("NavigableMap values: " + values);
输出结果为:
NavigableMap Key Set: [A, B, C, D, E]
NavigableMap values: [5, 3, 2, 4, 1]
获取NavigableMap的子Map
我们可以使用subMap()方法获取NavigableMap的指定子Map。下面是subMap()方法的参数和返回值说明:
subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)
参数:
- fromKey:子Map的起始键。
- fromInclusive:子Map是否包含起始键对应的值。
- toKey:子Map的结束键。
- toInclusive:子Map是否包含结束键对应的值。
返回值:
- 返回NavigableMap,其中包含从fromKey到toKey的所有键值对。
下面的代码展示了如何获取NavigableMap的子Map:
NavigableMap<String, Integer> subMap = map.subMap("B", true, "D", true);
System.out.println("SubMap: " + subMap);
输出结果为:
SubMap: {B=3, C=2, D=4}
获取NavigableMap的前一个或后一个键
我们可以使用lowerKey()方法获取NavigableMap中小于指定键的最大键,使用higherKey()方法获取NavigableMap中大于指定键的最小键。下面的代码展示了如何获取NavigableMap的前一个或后一个键:
String lowerKey = map.lowerKey("C");
String higherKey = map.higherKey("C");
System.out.println("Lower Key: " + lowerKey);
System.out.println("Higher Key: " + higherKey);
输出结果为:
Lower Key: B
Higher Key: D
获取NavigableMap的前一个或后一个Entry
我们可以使用lowerEntry()方法获取NavigableMap中小于指定键的Entry,使用higherEntry()方法获取NavigableMap中大于指定键的Entry。下面的代码展示了如何获取NavigableMap的前一个或后一个Entry:
Map.Entry<String, Integer> lowerEntry = map.lowerEntry("C");
Map.Entry<String, Integer> higherEntry = map.higherEntry("C");
System.out.println("Lower Entry: " + lowerEntry);
System.out.println("Higher Entry: " + higherEntry);
输出结果为:
Lower Entry: B=3
Higher Entry: D=4
获取NavigableMap的第一个或最后一个Entry
我们可以使用firstEntry()方法获取NavigableMap中第一个Entry,使用lastEntry()方法获取NavigableMap中最后一个Entry。下面的代码展示了如何获取NavigableMap的第一个或最后一个Entry:
Map.Entry<String, Integer> firstEntry = map.firstEntry();
Map.Entry<String, Integer> lastEntry = map.lastEntry();
System.out.println("First Entry: " + firstEntry);
System.out.println("Last Entry: " + lastEntry);
输出结果为:
First Entry: A=5
Last Entry: E=1
删除NavigableMap中的元素
我们可以使用remove()方法删除NavigableMap中的元素。下面的代码展示了如何删除NavigableMap中的元素:
map.remove("C");
System.out.println("After removing C: " + map);
输出结果为:
After removing C: {A=5, B=3, D=4, E=1}
使用NavigableMap的迭代器遍历元素
我们可以使用entrySet()方法获取NavigableMap中的所有键值对,并使用迭代器遍历这些元素。下面的代码展示了如何使用NavigableMap的迭代器遍历元素:
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
System.out.println("NavigableMap Iterator:");
while (iterator.hasNext()) {
Map.Entry<String, Integer> entry = iterator.next();
System.out.println(entry.getKey() + " : " + entry.getValue());
}
输出结果为:
NavigableMap Iterator:
A : 5
B : 3
D : 4
E : 1
结论
通过这篇文章,我们已经了解了如何在Java中使用NavigableMap接口。我们可以通过创建NavigableMap对象、添加元素、获取子Map、获取前一个或后一个键、获取前一个或后一个Entry、获取第一个或最后一个Entry、删除元素、使用迭代器遍历元素等操作来使用NavigableMap接口。