📅  最后修改于: 2023-12-03 15:07:53.608000             🧑  作者: Mango
在Java中,TreeMap是一个基于红黑树实现的有序映射。默认情况下,它按升序键排序。但是在一些情况下,我们希望按相反的顺序迭代TreeMap。本文将介绍如何在Java中以相反的顺序迭代TreeMap。
我们可以使用Collections类的reverseOrder()方法来创建一个比较器,然后将其传递给TreeMap的构造函数。这样可以使TreeMap按照比较器的相反顺序进行排序。
import java.util.Collections;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
public class ReverseTreeMap {
public static void main(String[] args) {
Map<Integer, String> treeMap = new TreeMap<>(
Collections.reverseOrder()); //创建一个比较器对象
treeMap.put(3, "orange");
treeMap.put(1, "apple");
treeMap.put(2, "banana");
for (Map.Entry<Integer, String> entry : treeMap.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
}
输出结果:
3 orange
2 banana
1 apple
我们可以注意到,TreeMap按照比较器的相反顺序进行遍历,即降序。
TreeMap的descendingMap()方法可以返回一个按相反顺序排列的子映射。我们可以使用它来实现以相反顺序遍历TreeMap。
import java.util.Map;
import java.util.TreeMap;
public class ReverseTreeMap {
public static void main(String[] args) {
Map<Integer, String> treeMap = new TreeMap<>();
treeMap.put(3, "orange");
treeMap.put(1, "apple");
treeMap.put(2, "banana");
Map<Integer, String> descendingMap = treeMap.descendingMap();
for (Map.Entry<Integer, String> entry : descendingMap.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
}
输出结果:
3 orange
2 banana
1 apple
我们可以看到,通过descendingMap()方法,我们可以得到一个按相反顺序排列的子映射。
本文介绍了如何在Java中以相反顺序迭代TreeMap。
我们可以使用Collections.reverseOrder()方法创建一个比较器,然后将其传递给TreeMap的构造函数来实现相反顺序迭代。
我们还可以使用TreeMap的descendingMap()方法返回一个按相反顺序排列的子映射。
以上两种方法实现的功能是一样的,我们可以根据自己的喜好来选择其中的一种方法。