📜  Java中的Java .util.TreeMap.descendingMap()和descendingKeyset()(1)

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

Java中的Java.util.TreeMap.descendingMap()和descendingKeyset()

在Java中,TreeMap是一种有序的映射集合。它存储键值对,并按照键的自然顺序或比较器的顺序进行排序。在TreeMap中,有两种方法可以返回键的逆序视图。它们是descendingMap()descendingKeyset()方法。下面是这两种方法的介绍:

1. descendingMap()

descendingMap()方法返回一个TreeMap,其中的所有键值对都按照键的逆序排列。即,第一个键是原有TreeMap中的最后一个键,最后一个键是原有TreeMap中的第一个键。下面是descendingMap()方法的语法:

public NavigableMap<K,V> descendingMap();

这里,NavigableMapTreeMap实现的接口。KV是树映射中的键和值的类型。下面是descendingMap()方法的用法示例:

import java.util.TreeMap;
import java.util.NavigableMap;

public class Main {
  public static void main(String[] args) {
    TreeMap<String, Integer> grades = new TreeMap<>();
    grades.put("Alice", 90);
    grades.put("Bob", 80);
    grades.put("Charlie", 70);

    NavigableMap<String, Integer> descendingGrades = grades.descendingMap();

    System.out.println("Grades in descending order:");
    for (String name : descendingGrades.keySet()) {
      System.out.println(name + " scored " + descendingGrades.get(name));
    }
  }
}

输出结果:

Grades in descending order:
Charlie scored 70
Bob scored 80
Alice scored 90

在上面的代码中,我们首先创建一个TreeMap对象grades,并将一些成绩添加到映射中。我们然后调用descendingMap()方法,将返回一个指定键的逆序视图的新映射descendingGrades。最后,我们使用for循环遍历descendingGradeskeySet(),并打印出每个键及其对应的值。

2. descendingKeyset()

descendingKeyset()方法返回一个逆序的NavigableSet,其中包含键的逆序。即,第一个键是原有TreeMap中的最后一个键,最后一个键是原有TreeMap中的第一个键。下面是descendingKeyset()方法的语法:

public NavigableSet<K> descendingKeySet();

这里,NavigableSetTreeMap实现的接口。K是树映射中的键的类型。下面是descendingKeyset()方法的用法示例:

import java.util.TreeMap;
import java.util.NavigableSet;

public class Main {
  public static void main(String[] args) {
    TreeMap<String, Integer> grades = new TreeMap<>();
    grades.put("Alice", 90);
    grades.put("Bob", 80);
    grades.put("Charlie", 70);

    NavigableSet<String> descendingNames = grades.descendingKeySet();

    System.out.println("Names in descending order:");
    for (String name : descendingNames) {
      System.out.println(name);
    }
  }
}

输出结果:

Names in descending order:
Charlie
Bob
Alice

在上面的代码中,我们首先创建一个TreeMap对象grades,并将一些成绩添加到映射中。我们然后调用descendingKeyset()方法,将返回一个键的逆序视图的新NavigableSet对象descendingNames。最后,我们使用for循环遍历descendingNames,并打印出每个键。