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