Java - Sortieren einer TreeMap nach Werten mit Comparator

Die Sammlung TreeMap ist standardmäßig nach seinen Schlüsseln sortiert, aber wenn Sie sortieren müssen TreeMap nach Werten, dann bietet Java eine Möglichkeit, dies mit dem comparator.

Beispiel:

package codeurjava; 

import java.util.*;

class TreeMapSort {

// Sortieren von TreeMap-Elementen nach Werten
public static > Map sortByValues(final Map map) {

Comparator valueComparator = new Comparator() {
public int compare(K k1, K k2) {
int compare = map.get(k1).compareTo(map.get(k2));
if (compare == 0)
return 1;
else
return compare;
}
};

Map TreeMap_triee_par_valeur = new TreeMap(valueComparator);
TreeMap_triee_par_valeur.putAll(Karte);
return TreeMap_triee_par_valeur;
}

public static void main(String args[]) {

TreeMap treemap = new TreeMap();

// elemente
treemap.put("1", "e4");
treemap.put("2", "e5");
treemap.put("3", "e1");
treemap.put("4", "e3");
treemap.put("5", "e2");

System.out.println("Vor dem Sortieren:");

/* Durchsuchen der unsortierten TreeMap mit Iterator */

Set set = treemap.entrySet();
Iterator i = set.iterator();
// Zeige Elemente
while(i.hasNext()) {
Map.Entry entry entry = (Map.Entry)i.next();
System.out.print(entry.getKey() + " : ");
System.out.println(entry.getValue());
}

System.out.println("Nach dem Sortieren:");
// sortByvalues()
Map-Methode aufrufen TreeMap_triee_par_valeur = sortByValues(treemap);

/* Durchsuchen Sie die neue Map sortiert mit Iterator */

set = TreeMap_triee_par_valeur.entrySet();
i = set.iterator();
// Zeige Elemente
while(i.hasNext()) {
Map.Entry entry entry = (Map.Entry)i.next();
System.out.print(entry.getKey() + " : ");
System.out.println(entry.getValue());
}

}
}

Execution

Vor dem Sortieren: 
1 : e4
2 : e5
3 : e1
4 : e3
5 : e2
Nach dem Sortieren:
3 : e1
5 : e2
4 : e3
1 : e4
2 : e5

Referenzen:

Java-Dokumentation - Komparator (JavaSE 8)