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

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

Mary-Kate Olsen
Freigeben: 2024-12-21 16:16:12
Original
208 Leute haben es durchsucht

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

Sortieren einer TreeMap nach Wert

Einführung:

In einer TreeMap werden Elemente sortiert basierend auf ihrer natürlichen Reihenfolge, bei der es sich je nach Implementierung um Schlüssel oder Werte handeln kann. Es ist jedoch möglich, eine TreeMap anhand der Werte ihrer Einträge mithilfe eines Komparators zu sortieren.

Lösung:

Sie können eine TreeMap nicht direkt nach ihren Werten sortieren. Die Syntax, die Sie mit dem byValue-Komparator versucht haben, ist falsch.

Sie können jedoch die gewünschte Funktionalität erreichen, indem Sie ein benutzerdefiniertes SortedSet erstellen, das die Einträge der TreeMap enthält. Dieses SortedSet kann mit der Methode „entrySortedByValues()“ erstellt werden:

static <K,V extends Comparable<? super V>>
SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
    SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<>(
        new Comparator<Map.Entry<K,V>>() {
            @Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
                int res = e1.getValue().compareTo(e2.getValue());
                return res != 0 ? res : 1;
            }
        }
    );
    sortedEntries.addAll(map.entrySet());
    return sortedEntries;
}
Nach dem Login kopieren

Diese Methode nimmt eine Map, deren Werte vergleichbar sind, und gibt ein SortedSet von Map.Entry zurück, sortiert nach den Werten der Einträge.

So verwenden Sie diese Methode:

Map<String, Integer> map = new TreeMap<>();
map.put("A", 3);
map.put("B", 2);
map.put("C", 1); 

System.out.println(map); // prints "{A=3, B=2, C=1}"

SortedSet<Map.Entry<String,Integer>> sortedEntries = entriesSortedByValues(map);
System.out.println(sortedEntries); // prints "[C=1, B=2, A=3]"
Nach dem Login kopieren

Hinweis zur Ganzzahl Gleichheit:

Beim Vergleich von Ganzzahlwerten mit == wird auf Referenzgleichheit und nicht auf Wertgleichheit geprüft. Es wird empfohlen, die Methode equal() zu verwenden, um Ganzzahlwerte auf Gleichheit zu vergleichen.

Das obige ist der detaillierte Inhalt vonWie kann ich eine TreeMap 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