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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.