Hashmap nach Werten sortieren
Problem:
Wir müssen eine HashMap basierend auf sortieren die darin enthaltenen Werte und behalten dabei die Schlüssel-Wert-Paare bei Sortieren.
Lösung:
Das Sortieren einer HashMap nach Werten kann mit einem generischen Ansatz erfolgen. Die folgenden Schritte beschreiben den Prozess:
Beispielimplementierung:
Der folgende Java-Code implementiert den Sortieralgorithmus:
import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; public class SortMapByValue { public static final boolean ASC = true; public static final boolean DESC = false; public static void main(String[] args) { // Create dummy HashMap Map<Integer, String> unsortedMap = new HashMap<>(); unsortedMap.put(1, "froyo"); unsortedMap.put(2, "abby"); unsortedMap.put(3, "denver"); unsortedMap.put(4, "frost"); unsortedMap.put(5, "daisy"); // Sort in ascending order Map<Integer, String> sortedMapAsc = sortByValue(unsortedMap, ASC); // Sort in descending order Map<Integer, String> sortedMapDesc = sortByValue(unsortedMap, DESC); // Print sorted maps System.out.println("Sorted Ascending:"); printMap(sortedMapAsc); System.out.println("Sorted Descending:"); printMap(sortedMapDesc); } private static Map<Integer, String> sortByValue(Map<Integer, String> map, boolean order) { List<Entry<Integer, String>> list = new LinkedList<>(map.entrySet()); // Custom comparator for values Collections.sort(list, new Comparator<Entry<Integer, String>>() { public int compare(Entry<Integer, String> o1, Entry<Integer, String> o2) { if (order) { return o1.getValue().compareTo(o2.getValue()); } else { return o2.getValue().compareTo(o1.getValue()); } } }); // Return sorted LinkedHashMap Map<Integer, String> sortedMap = new LinkedHashMap<>(); for (Entry<Integer, String> entry : list) { sortedMap.put(entry.getKey(), entry.getValue()); } return sortedMap; } public static void printMap(Map<Integer, String> map) { for (Entry<Integer, String> entry : map.entrySet()) { System.out.println(entry.getKey() + " - " + entry.getValue()); } System.out.println(); } }
Das obige ist der detaillierte Inhalt vonWie kann ich eine HashMap nach ihren Werten sortieren und gleichzeitig Schlüssel-Wert-Paare in Java beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!