Heim >Java >javaLernprogramm >Wie sortiere ich eine Java HashMap nach Werten in aufsteigender und absteigender Reihenfolge?

Wie sortiere ich eine Java HashMap nach Werten in aufsteigender und absteigender Reihenfolge?

Susan Sarandon
Susan SarandonOriginal
2024-11-26 17:38:15650Durchsuche

How to Sort a Java HashMap by Values in Ascending and Descending Order?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn