Sortieren einer HashMap nach Werten
In Java bietet die HashMap-Datenstruktur eine praktische Möglichkeit, Schlüssel-Wert-Paare zu speichern. Wenn Sie jedoch auf die Daten basierend auf den mit den Schlüsseln verknüpften Werten zugreifen müssen, ist eine Sortierung der HashMap nach Werten erforderlich.
Sortieren einer HashMap in aufsteigender Reihenfolge
Ein Ansatz zum Sortieren einer HashMap nach Werten ist die Verwendung eines Java 8-Streams. Das folgende Code-Snippet zeigt, wie das in aufsteigender Reihenfolge gemacht wird:
import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class SortHashMapByValues { public static void main(String[] args) { // Create an unsorted HashMap HashMap<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 the HashMap by values in ascending order Map<Integer, String> sortedMapAsc = unsortedMap.entrySet() .stream() .sorted(Map.Entry.comparingByValue()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); // Key, Value : 2, abby // Key, Value : 5, daisy // Key, Value : 3, denver // Key, Value : 4, frost // Key, Value : 1, froyo System.out.println(sortedMapAsc); } }
Sortieren einer HashMap in absteigender Reihenfolge
Um eine HashMap nach Werten in absteigender Reihenfolge zu sortieren, Ändern Sie den obigen Codeausschnitt leicht:
import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class SortHashMapByValues { public static void main(String[] args) { // Create an unsorted HashMap HashMap<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 the HashMap by values in descending order Map<Integer, String> sortedMapDesc = unsortedMap.entrySet() .stream() .sorted(Map.Entry.<Integer, String>comparingByValue().reversed()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); // Key, Value : 1, froyo // Key, Value : 4, frost // Key, Value : 3, denver // Key, Value : 5, daisy // Key, Value : 2, abby System.out.println(sortedMapDesc); } }
Dieser Code gibt die sortierte HashMap mit aus Schlüssel, die die ursprünglichen Schlüssel und Werte darstellen, sortiert in absteigender Reihenfolge. Sowohl die Beispiele für aufsteigende als auch absteigende Reihenfolge verwenden eine LinkedHashMap, um die Einfügereihenfolge beizubehalten und sicherzustellen, dass die Schlüssel ordnungsgemäß mit den sortierten Werten verknüpft sind.
Das obige ist der detaillierte Inhalt vonWie sortiere ich eine Java HashMap nach Werten in aufsteigender und absteigender Reihenfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!