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) {
ComparatorvalueComparator = 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;
}
};
MapTreeMap_triee_par_valeur = new TreeMap (valueComparator);
TreeMap_triee_par_valeur.putAll(Karte);
return TreeMap_triee_par_valeur;
}
public static void main(String args[]) {
TreeMaptreemap = 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: