NavigableMap接口在Java中的使用示例

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接口。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程