📜  Java NavigableMap接口(1)

📅  最后修改于: 2023-12-03 15:31:31.608000             🧑  作者: Mango

Java NavigableMap接口

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

在下面的示例中,我们将使用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()方法找到分数对应的字母等级。