Java 中以逆序迭代 TreeMap


TreeMapJava 集合框架 中的一个类,它实现了 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()。

更新于: 2024-10-30

927 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告