Heim > Java > javaLernprogramm > Wie kann ich eine HashMap nach ihren Werten in Java sortieren?

Wie kann ich eine HashMap nach ihren Werten in Java sortieren?

Patricia Arquette
Freigeben: 2024-11-27 14:56:12
Original
679 Leute haben es durchsucht

How Can I Sort a HashMap by its Values in Java?

HashMap nach Werten sortieren

Das Sortieren einer HashMap nach ihren Werten kann in verschiedenen Programmierszenarien ein nützlicher Vorgang sein. Um diese Aufgabe effektiv auszuführen, können wir die integrierten Funktionen von Java nutzen und eine benutzerdefinierte Sortierlogik implementieren.

Verwendung von Java Lambdas und Streams:

Verwendung der Lambda-Ausdrücke und von Java 8 Streams bietet einen prägnanten und modernen Ansatz zum Sortieren einer HashMap. Der folgende Codeausschnitt veranschaulicht diese Technik:

import java.util.*;
import java.util.stream.Collectors;

public class HashMapSort {

    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        map.put(1, "froyo");
        map.put(2, "abby");
        map.put(3, "denver");
        map.put(4, "frost");
        map.put(5, "daisy");

        // Sort the HashMap by values in ascending order
        Map<Integer, String> sortedMapAsc = map.entrySet()
                .stream()
                .sorted(Comparator.comparing(Map.Entry::getValue))
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                        (a, b) -> b, LinkedHashMap::new));

        // Print the sorted map
        for (Map.Entry<Integer, String> entry : sortedMapAsc.entrySet()) {
            System.out.println(entry.getKey() + "," + entry.getValue());
        }
    }
}
Nach dem Login kopieren

Benutzerdefinierte Sortierung:

Alternativ können wir einen benutzerdefinierten Sortieralgorithmus mithilfe eines Komparators implementieren. Dieser Ansatz gibt uns mehr Flexibilität und Kontrolle über den Sortierprozess:

import java.util.*;

public class HashMapSort {

    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        map.put(1, "froyo");
        map.put(2, "abby");
        map.put(3, "denver");
        map.put(4, "frost");
        map.put(5, "daisy");

        // Define a custom comparator to sort by values
        Comparator<Map.Entry<Integer, String>> comparator = new Comparator<>() {
            @Override
            public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }
        };

        // Sort the HashMap by values in ascending order
        List<Map.Entry<Integer, String>> sortedList = new ArrayList<>(map.entrySet());
        sortedList.sort(comparator);

        // Print the sorted map
        for (Map.Entry<Integer, String> entry : sortedList) {
            System.out.println(entry.getKey() + "," + entry.getValue());
        }
    }
}
Nach dem Login kopieren

Zusammenfassend lässt sich sagen, dass das Sortieren einer HashMap nach ihren Werten mithilfe verschiedener Techniken erreicht werden kann, einschließlich Java-Lambdas und -Streams oder benutzerdefinierten Komparatorimplementierungen. Die Wahl des Ansatzes hängt von den spezifischen Anforderungen und dem Kontext der Anwendung ab.

Das obige ist der detaillierte Inhalt vonWie kann ich eine HashMap nach ihren Werten in Java sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage