📅  最后修改于: 2023-12-03 15:31:31.608000             🧑  作者: Mango
Java NavigableMap接口是Java集合框架中的一种Map接口。NavigableMap接口扩展了SortedMap接口,提供了一些用于导航Map的附加方法。该接口提供了许多与键相关的方法,例如返回这些键的子集、范围等。
NavigableMap接口是一种有序的Map,可以根据键的自然顺序或者指定的Comparator顺序来进行排序。NavigableMap中的键必须是可比较的,如果键没有实现Comparable接口,那么必须提供一个Comparator接口的实现来进行比较。
对NavigableMap接口的实现类来说,以下是可用的主要方法 -
ceilingEntry(K key)
– 返回与从这个map到指定键的键关联的键/值映射。ceilingKey(K key)
– 返回大于等于给定键的最小键。descendingKeySet()
– 返回向下的键组成的集合。descendingMap()
– 返回一个NavigableMap,其映射的关系与此map相反的顺序。firstEntry()
– 返回此map中最小的键/值映射,如果此map为空,返回null。floorEntry(K key)
– 返回与从这个map到指定键的键关联的键/值映射。floorKey(K key)
– 返回小于等于给定键的最大键。headMap(K toKey, boolean inclusive)
– 返回映射到小于或等于键toKey的键的子map。higherEntry(K key)
– 返回到指定键与此map关联的最小的键/值映射,否则返回null。higherKey(K key)
– 返回大于给定键的最小键。lastEntry()
– 返回此map中最大的键/值映射,如果此map为空,返回null。lowerEntry(K key)
– 返回到指定键与此map关联的最大的键/值映射,否则返回null。lowerKey(K key)
– 返回小于给定键的最大键。navigableKeySet()
– 返回键的NavigableSet视图。pollFirstEntry()
– 从此映射中删除并返回第一个(最小)映射;如果这个映射为空,返回null。pollLastEntry()
– 从此映射中删除并返回最后一个(最大)映射;如果这个映射为空,返回null。subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)
– 返回映射到范围[fromKey, toKey)中键的子map。tailMap(K fromKey, boolean inclusive)
– 返回映射到键大于或等于toKey的键的子map。在下面的示例中,我们将使用NavigableMap接口来创建一个Map以管理学生的分数。它将向我们展示如何使用NavigableMap来查找学生的分数并将其转换为字母等级。
import java.util.*;
public class Main {
public static void main(String[] args) {
// Creating a navigable map of student's grade
NavigableMap<Integer, String> grades = new TreeMap<>();
// Populating the Map
grades.put(90, "A");
grades.put(80, "B");
grades.put(70, "C");
grades.put(60, "D");
grades.put(50, "E");
grades.put(40, "F");
// Getting the Student's score
int score = 75;
// Getting the Navigation map view of Head
NavigableMap<Integer, String> headMap = grades.headMap(score, true);
// Converting the score into appropriate grade
String grade = headMap.lastEntry().getValue();
// Printing the Score and Grade
System.out.printf("Score: %d; Grade: %s%n", score, grade);
}
}
输出
Score: 75; Grade: C
在上面的示例中,我们使用NavigableMap接口来查找学生的分数并将其转换为字母等级。该程序使用headMap()方法创建了导航图的子集,并使用lastEntry()方法找到分数对应的字母等级。