Java 中以逆序迭代 TreeMap
TreeMap 是 Java 集合框架 中的一个类,它实现了 NavigableMap 接口。它以树形结构存储映射中的元素,并提供了一种有效的替代方案,以排序顺序存储键值对。换句话说,它始终按升序返回元素。
然而,Java 提供了几种方法以降序迭代 TreeMap。在本文中,我们将探讨以逆序迭代 TreeMap 的方法。
如何以逆序迭代 TreeMap?
在 Java 中,我们可以使用以下方法以逆序打印 TreeMap 的元素
-
使用 TreeMap.descendingMap() 方法
-
使用 TreeMap.descendingKeySet() 方法
-
使用 Collections.reverseOrder() 方法
让我们通过示例程序逐一讨论它们。
使用 TreeMap.descendingMap() 方法
在 Java 中,TreeMap.descendingMap() 方法返回映射中包含的映射的逆序视图。降序映射由原始映射支持,因此对原始映射的更改会反映在降序映射中,反之亦然。
示例
在此示例中,我们将使用内置方法 TreeMap.descendingMap() 以逆序迭代 TreeMap。为此,我们将首先定义一个 TreeMap,然后将其元素以逆序存储到另一个映射中。
import java.util.*;
public class Example1 {
public static void main(String[] args) {
// creating a TreeMap
TreeMap<String, Integer> TrMap = new TreeMap<>();
// Adding elements in the map
TrMap.put("Backpack", 4000);
TrMap.put("Desktop", 3000);
TrMap.put("Keypad", 1500);
TrMap.put("Watch", 2000);
TrMap.put("Pen drive", 2500);
// storing the elements of the map in descending order
Map<String, Integer> newMap = TrMap.descendingMap();
// printing the details of map
System.out.println("Elements of the map in Reverse Order: ");
// iterating through the map
for (String unKey : newMap.keySet()) {
// printing details of map in reverse order
System.out.println("Item: " + unKey + ", Price: " + newMap.get(unKey));
}
}
}
上述代码的输出如下所示:
Elements of the map in Reverse Order: Item: Watch, Price: 2000 Item: Pen drive, Price: 2500 Item: Keypad, Price: 1500 Item: Desktop, Price: 3000 Item: Backpack, Price: 4000
使用 TreeMap.descendingKeySet() 方法
Java TreeMap descendingKeySet() 方法用于返回此映射中包含的键的逆序 NavigableSet 视图。该集合的迭代器按降序返回键。
示例
在以下示例中,我们将使用内置方法 TreeMap.descendingKeySet() 以逆序迭代 TreeMap。对于此操作,我们不会像在前面的示例中那样创建映射,而是创建一个集合,该集合将以逆序存储映射的键。此外,使用这些键,我们将获得相应的 value。
import java.util.*;
public class Example2 {
public static void main(String[] args) {
// creating a TreeMap
TreeMap<Integer, String> TrMap = new TreeMap<>();
// Adding elements in the map
TrMap.put(40, "Backpack");
TrMap.put(12, "Desktop");
TrMap.put(150, "Keypad");
TrMap.put(125, "Watch");
TrMap.put(250, "Pen drive");
// retrieving the keys in reverse order
Set<Integer> keys = TrMap.descendingKeySet();
// printing the details of map
System.out.println("Elements of the map in Reverse Order: ");
// iterating through the map
for (Integer unKey : keys) {
// printing details of map in reverse order
System.out.println("Item: " + TrMap.get(unKey) + ", Quantity: " + unKey);
}
}
}
此代码将产生以下结果:
Elements of the map in Reverse Order: Item: Pen drive, Quantity: 250 Item: Keypad, Quantity: 150 Item: Watch, Quantity: 125 Item: Backpack, Quantity: 40 Item: Desktop, Quantity: 12
使用 Collections.reverseOrder() 方法
Java Collections reverseOrder() 方法用于获取一个比较器,该比较器对实现 Comparable 接口的对象集合强加自然排序的逆序。
示例
这是以逆序获取 TreeMap 元素的另一个示例。我们只需要将 Collections.reverseOrder() 方法传递给 TreeMap 的构造函数,该构造函数将以逆序返回 TreeMap 集合的元素。
import java.util.*;
public class Example3 {
public static void main(String[] args) {
// creating a TreeMap by passing Collections.reverseOrder()
TreeMap<String, Integer> TrMap = new TreeMap<>(Collections.reverseOrder());
// Adding elements in the map
TrMap.put("Kurti", 4000);
TrMap.put("Shirt", 3000);
TrMap.put("TShirt", 1500);
TrMap.put("Watch", 2000);
TrMap.put("Perfume", 2500);
// printing the details of map
System.out.println("Elements of the map in Reverse Order: ");
// iterating through the map
for (String unKey : TrMap.keySet()) {
// printing details of map in reverse order
System.out.println("Item: " + unKey + ", Price: " + TrMap.get(unKey));
}
}
}
上述代码将显示以下输出:
Elements of the map in Reverse Order: Item: Watch, Price: 2000 Item: TShirt, Price: 1500 Item: Shirt, Price: 3000 Item: Perfume, Price: 2500 Item: Kurti, Price: 4000
结论
我们从定义 TreeMap 开始本文,在下一节中,我们讨论了如何以逆序迭代 TreeMap。对于此操作,我们使用了三种不同的内置方法:descendingMap()、descendingKeySet() 和 Collections.reverseOrder()。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP