Чтобы отсортировать Java TreeMap по значению в обратном порядке, вы можете использовать следующие методы:
Метод 1: использование компаратора
Один из способов добиться этого — создать собственный компаратор, который сравнивает значения записей TreeMap в обратном порядке. Вот пример:
import java.util.*;
public class Main {
public static void main(String[] args) {
// Create a TreeMap with Integer keys and String values
TreeMap<Integer, String> treeMap = new TreeMap<>();
// Add some entries to the TreeMap
treeMap.put(1, "Apple");
treeMap.put(2, "Banana");
treeMap.put(3, "Orange");
treeMap.put(4, "Mango");
// Create a custom Comparator to compare values in reverse order
Comparator<Integer> valueComparator = (k1, k2) -> treeMap.get(k2).compareTo(treeMap.get(k1));
// Create a TreeMap sorted by values in reverse order using the custom Comparator
TreeMap<Integer, String> sortedTreeMap = new TreeMap<>(valueComparator);
sortedTreeMap.putAll(treeMap);
// Print the sorted TreeMap
for (Map.Entry<Integer, String> entry : sortedTreeMap.entrySet()) {
System.out.println(entry.getKey() + " => " + entry.getValue());
}
}
}
Метод 2: использование потоков Java 8
Другой подход заключается в использовании потоков Java 8 для сортировки записей на основе их значений в обратном порядке. Вот пример:
import java.util.*;
public class Main {
public static void main(String[] args) {
// Create a TreeMap with Integer keys and String values
TreeMap<Integer, String> treeMap = new TreeMap<>();
// Add some entries to the TreeMap
treeMap.put(1, "Apple");
treeMap.put(2, "Banana");
treeMap.put(3, "Orange");
treeMap.put(4, "Mango");
// Sort the entries by values in reverse order using Java 8 Streams
List<Map.Entry<Integer, String>> sortedEntries = new ArrayList<>(treeMap.entrySet());
Collections.sort(sortedEntries, Comparator.comparing(Map.Entry::getValue, Comparator.reverseOrder()));
// Create a new TreeMap to store the sorted entries
TreeMap<Integer, String> sortedTreeMap = new TreeMap<>();
// Put the sorted entries into the new TreeMap
for (Map.Entry<Integer, String> entry : sortedEntries) {
sortedTreeMap.put(entry.getKey(), entry.getValue());
}
// Print the sorted TreeMap
for (Map.Entry<Integer, String> entry : sortedTreeMap.entrySet()) {
System.out.println(entry.getKey() + " => " + entry.getValue());
}
}
}