Sortieren einer HashMap

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Eine HashMap ist eine Sammlung, die Schlüssel-Wert-Paare speichert. Allerdings speichert sie die Schlüssel-Wert-Paare nicht in einer bestimmten Reihenfolge und behält die Einfügereihenfolge der Elemente nicht bei. Es können Fälle auftreten, in denen wir die gespeicherten Daten in aufsteigender Reihenfolge anzeigen möchten. In solchen Fällen müssen wir die HashMap sortieren.

Erstellen einer neuen Java-Datei

Zunächst müssen wir eine neue Java-Datei erstellen, um den Code zum Sortieren einer HashMap zu schreiben. Öffnen Sie das Terminal und navigieren Sie zum Verzeichnis, in dem Sie die Datei erstellen möchten. Verwenden Sie den folgenden Befehl, um eine neue Datei mit dem Namen HashMapSortDemo.java zu erstellen.

touch HashMapSortDemo.java

Sortieren nach Schlüsseln mit Collections.sort()

Wir können eine HashMap nach Schlüsseln mithilfe der Collections.sort()-Methode sortieren. Folgen Sie dem unten stehenden Code:

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map.Entry;

public class HashMapSortDemo {
    public static void main(String args[]) {
        HashMap<String, Integer> unsortedMap = new HashMap<>();
        unsortedMap.put("one", 1);
        unsortedMap.put("two", 2);
        unsortedMap.put("three", 3);
        unsortedMap.put("four", 4);
        unsortedMap.put("five", 5);

        System.out.println("Printing the Unsorted HashMap");
        for(Entry<String, Integer> e : unsortedMap.entrySet()) {
            System.out.println(e.getKey() + "-->" + e.getValue());
        }

        ArrayList<String> sortedList = new ArrayList<>(unsortedMap.keySet());
        Collections.sort(sortedList);

        System.out.println("\nPrinting the Alphabetically Sorted Keys");
        for(String s : sortedList) {
            System.out.println(s + "-->" + unsortedMap.get(s));
        }
    }
}

Der obige Code sortiert die HashMap nach Schlüsseln mithilfe der Collections.sort()-Methode.

Verwenden Sie den folgenden Befehl, um den Code zu kompilieren und auszuführen:

javac HashMapSortDemo.java && java HashMapSortDemo

Sortieren nach Werten mit Collections.sort()

Wir können eine HashMap nach Werten mithilfe der Collections.sort()-Methode sortieren. Folgen Sie dem unten stehenden Code:

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map.Entry;

public class HashMapSortDemo {
    public static void main(String args[]) {
        HashMap<String, Integer> unsortedMap = new HashMap<>();
        unsortedMap.put("one", 1);
        unsortedMap.put("two", 2);
        unsortedMap.put("three", 3);
        unsortedMap.put("four", 4);
        unsortedMap.put("five", 5);

        System.out.println("Printing the Unsorted HashMap");
        for(Entry<String, Integer> e : unsortedMap.entrySet()) {
            System.out.println(e.getKey() + "-->" + e.getValue());
        }

        ArrayList<Integer> sortedList = new ArrayList<>(unsortedMap.values());
        Collections.sort(sortedList);

        System.out.println("\nPrinting the Sorted Values");
        for(Integer i : sortedList) {
            System.out.println(i);
        }
    }
}

Der obige Code sortiert die HashMap nach Werten mithilfe der Collections.sort()-Methode.

Verwenden Sie den folgenden Befehl, um den Code zu kompilieren und auszuführen:

javac HashMapSortDemo.java && java HashMapSortDemo

Sortieren nach Schlüsseln mit TreeMap

Wir können eine HashMap nach Schlüsseln mithilfe eines TreeMap sortieren. Ein TreeMap speichert die Schlüssel-Wert-Paare automatisch in aufsteigender Reihenfolge (sortiert nach Schlüsseln). Folgen Sie dem unten stehenden Code:

import java.util.HashMap;
import java.util.Map.Entry;
import java.util.TreeMap;

public class HashMapSortDemo {
    public static void main(String args[]) {
        HashMap<String, Integer> unsortedMap = new HashMap<>();
        unsortedMap.put("one", 1);
        unsortedMap.put("two", 2);
        unsortedMap.put("three", 3);
        unsortedMap.put("four", 4);
        unsortedMap.put("five", 5);

        System.out.println("Printing the Unsorted HashMap");
        for(Entry<String, Integer> e : unsortedMap.entrySet()) {
            System.out.println(e.getKey() + "-->" + e.getValue());
        }

        TreeMap<String, Integer> sortedMap = new TreeMap<>(unsortedMap);

        System.out.println("\nPrinting the Sorted TreeMap");
        for(Entry<String, Integer> e : sortedMap.entrySet()) {
            System.out.println(e.getKey() + "-->" + e.getValue());
        }
    }
}

Der obige Code sortiert die HashMap nach Schlüsseln mithilfe eines TreeMap.

Verwenden Sie den folgenden Befehl, um den Code zu kompilieren und auszuführen:

javac HashMapSortDemo.java && java HashMapSortDemo

Sortieren nach Werten mit TreeSet

Wir können eine HashMap nach Werten mithilfe eines TreeSet sortieren. Ein TreeSet speichert auch die Daten in aufsteigender Reihenfolge (sortiert nach Werten). Folgen Sie dem unten stehenden Code:

import java.util.HashMap;
import java.util.Map.Entry;
import java.util.TreeSet;

public class HashMapSortDemo {
    public static void main(String args[]) {
        HashMap<String, Integer> unsortedMap = new HashMap<>();
        unsortedMap.put("one", 1);
        unsortedMap.put("two", 2);
        unsortedMap.put("three", 3);
        unsortedMap.put("four", 4);
        unsortedMap.put("five", 5);

        unsortedMap.put("fourteen", 4);
        unsortedMap.put("fifteen", 5);
        unsortedMap.put("twenty", 2);

        System.out.println("Printing the Unsorted HashMap");
        for(Entry<String, Integer> e : unsortedMap.entrySet()) {
            System.out.println(e.getKey() + "-->" + e.getValue());
        }

        TreeSet<Integer> sortedSet = new TreeSet<>(unsortedMap.values());

        System.out.println("\nThe sorted values are: " + sortedSet);
    }
}

Der obige Code sortiert die HashMap nach Werten mithilfe eines TreeSet.

Verwenden Sie den folgenden Befehl, um den Code zu kompilieren und auszuführen:

javac HashMapSortDemo.java && java HashMapSortDemo

Sortieren mit Stream und Lambda-Ausdrücken

Wir können eine HashMap in einer einzigen Codezeile sortieren, indem wir Java Streams und Lambda-Ausdrücke verwenden. Folgen Sie dem unten stehenden Code:

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Stream;

public class HashMapSortDemo {
    public static void main(String args[]) {
        HashMap<String, Integer> unsortedMap = new HashMap<>();
        unsortedMap.put("one", 1);
        unsortedMap.put("two", 2);
        unsortedMap.put("three", 3);
        unsortedMap.put("four", 4);
        unsortedMap.put("five", 5);

        System.out.println("Printing the Unsorted HashMap");
        for(Entry<String, Integer> e : unsortedMap.entrySet()) {
            System.out.println(e.getKey() + "-->" + e.getValue());
        }

        Stream<Entry<String, Integer>> sortedStream = unsortedMap.entrySet()
                                      .stream()
                                      .sorted(Map.Entry.<String, Integer>comparingByKey());

        System.out.println("\nPrinting the Sorted Key-Value Pairs");
        sortedStream.forEach(System.out :: println);
    }
}

Der obige Code sortiert die HashMap mithilfe von Java Streams und Lambda-Ausdrücken.

Verwenden Sie den folgenden Befehl, um den Code zu kompilieren und auszuführen:

javac HashMapSortDemo.java && java HashMapSortDemo

Sortieren nach Werten mit Stream und Lambda-Ausdrücken

Wir können auch eine HashMap nach Werten sortieren, indem wir Java Streams und Lambda-Ausdrücke verwenden. Folgen Sie dem unten stehenden Code:

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Stream;

public class HashMapSortDemo {
    public static void main(String args[]) {
        HashMap<String, Integer> unsortedMap = new HashMap<>();
        unsortedMap.put("one", 1);
        unsortedMap.put("two", 2);
        unsortedMap.put("three", 3);
        unsortedMap.put("four", 4);
        unsortedMap.put("five", 5);

        System.out.println("Printing the Unsorted HashMap");
        for(Entry<String, Integer> e : unsortedMap.entrySet()) {
            System.out.println(e.getKey() + "-->" + e.getValue());
        }

        Stream<Entry<String, Integer>> sortedStream = unsortedMap.entrySet()
                                     .stream()
                                     .sorted(Map.Entry.<String, Integer>comparingByValue());

        System.out.println("\nPrinting the Sorted Key-Value Pairs");
        sortedStream.forEach(System.out :: println);
    }
}

Der obige Code sortiert die HashMap nach Werten mithilfe von Java Streams und Lambda-Ausdrücken.

Verwenden Sie den folgenden Befehl, um den Code zu kompilieren und auszuführen:

javac HashMapSortDemo.java && java HashMapSortDemo

Verwendung der Google Guava-Bibliothek

Die Google Guava-Bibliothek bietet uns die Klasse ImmutableSortedMap. Wir können die copyOf()-Methode dieser Klasse verwenden, um eine HashMap zu sortieren. Folgen Sie dem unten stehenden Code:

import java.util.HashMap;
import java.util.Map.Entry;
import com.google.common.collect.ImmutableSortedMap;

public class HashMapSortDemo {
    public static void main(String args[]) {
        HashMap<String, Integer> unsortedMap = new HashMap<>();
        unsortedMap.put("one", 1);
        unsortedMap.put("two", 2);
        unsortedMap.put("three", 3);
        unsortedMap.put("four", 4);
        unsortedMap.put("five", 5);

        System.out.println("Printing the Unsorted HashMap");
        for (Entry<String, Integer> e : unsortedMap.entrySet()) {
            System.out.println(e.getKey() + "-->" + e.getValue());
        }

        ImmutableSortedMap<String, Integer> sortedMap = ImmutableSortedMap.copyOf(unsortedMap);

        System.out.println("\nPrinting the Sorted ImmutableSortedMap");
        System.out.println(sortedMap);
    }
}

Der obige Code sortiert die HashMap mithilfe der Google Guava-Bibliothek.

Verwenden Sie den folgenden Befehl, um den Code zu kompilieren und auszuführen:

javac -cp ".:guava-30.1.1-jre.jar" HashMapSortDemo.java && java -cp ".:guava-30.1.1-jre.jar" HashMapSortDemo

Aufräumen

Schließlich löschen Sie die Datei HashMapSortDemo.java mit dem folgenden Befehl:

rm HashMapSortDemo.java

Zusammenfassung

In diesem Lab haben wir gesehen, wie man eine HashMap nach Schlüsseln oder Werten sortiert. Wir haben verschiedene Methoden wie Collections.sort(), TreeMap, TreeSet, Java Streams und Lambda-Ausdrücke sowie die Google Guava-Bibliothek verwendet, um die HashMap zu sortieren. Wir haben auch über ihre Anwendungsfälle gelernt und wie wir effizienten Code schreiben können, um die HashMap in Java zu sortieren.