So sortieren Sie eine HashMap nach Werten
Wie wir im Artikel gesehen habenSo sortieren Sie eine ArrayList< T> . In diesem Tutorial lernen wir, wie man eine HashMap in Java in aufsteigender und absteigender Reihenfolge sortiert. Dies ist fast dasselbe wie in einer ArrayList. Wir erstellen eine Klasse mit dem Namen "Comparator", die die Schnittstelle implementiert. Komparator , um den Vergleich in den beiden Beispielen in diesem Tutorial durchzuführen.1) Sortieren Sie mit Comparator und legen Sie das Ergebnis in TreeMap
Warum sollte die Instanz der Comparator-Klasse als Parameter im TreeMap-Konstruktor übergeben werden? Ganz einfach, weil TreeMap< K, V> implementiert die Map-Schnittstelle als HashMap und verfügt über einen TreeMap(Comparator comp)-Konstruktor. Der einzige Unterschied besteht darin, dass TreeMap nach keys.import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class Tri {
public static void main(String[] args) {
HashMapmap = new HashMap ();
Comparator comp = new Comparator(map);
TreeMapmap_apres = new TreeMap (comp);
map.put("A",49);
map.put("B",18);
map.put("C",92);
map.put("D",37);
map.put("E",62);
System.out.println("Vor dem Sortieren: "+map);
map_apres.putAll(Karte);
System.out.println("Nach dem Sortieren: "+map_apres);
}
}
class Comparator implementiert Comparator{
MapTupel;
public Comparator(HashMapmap) {
this.tuple = map;
}
//Dieser Komparator sortiert die Elemente in absteigender Reihenfolge
@Override
public int compare(Object o1, Object o2) {
// TODO Automatisch generierte Methode stub
if (int) tuple.get(o1) >= (int) tuple.get(o2)) {
return -1;
} else {
return 1;
}
}
}
2) Sortieren Sie HashMap mit Collections.sort
In diesem Beispiel sortieren wir Elemente vom Typ Double. Die Elemente werden in eine LinkedList kopiert, die die List-Schnittstelle implementiert, und dann mit dem Collections.sort die wir in früheren Artikeln zum Sortieren anderer Objektsammlungen verwendet haben. Nach dem Sortieren kopieren wir die sortierten Elemente aus LinkedList in eine neue Hash-Tabelle, die als Ausgabe zurückgegeben wird.public static void main(String[] args) {Run:
HashMapmap = new HashMap ();
map.put("A",18.5);
map.put("E",76.8);
map.put("C",24.1);
map.put("F",86.2);
map.put("D",5.7);
map.put("B",84.6);
System.out.println("Vor dem Sortieren: "+map);
System.out.println("Nach dem Sortieren: "+sortWithValue(map));
}
public static HashMap< Saite, doppelt> sortWithValue( HashMap< Saite, doppelt> Karte ){
Liste< Map.Entry< Saite, doppelt> > list =
neue LinkedList< Map.Entry< Saite, doppelt> > ( map.entrySet() );
Collections.sort( Liste, neuer Komparator< Map.Entry< Saite, doppelt> > (){
public int compare( Map.Entry< Saite, doppelt> o1, Map.Entry< Saite, doppelt> o2 ){
return (o1.getValue()).compareTo( o2.getValue());
}
});
HashMap< Saite, doppelt> map_apres = neue LinkedHashMap< Saite, doppelt> ();
for(Map.Entry< Saite, doppelt> entry : list)
map_apres.put( entry.getKey(), entry.getValue() );
map_apres zurückgeben;
}
Vor dem Sortieren: {D=5.7, E=76.8, F=86.2, A=18.5, B=84.6, C=24.1}Um in absteigender Richtung zu sortieren, ändern Sie einfach die Reihenfolge des Vergleichs in der compare:
Nach dem Sortieren: {D=5.7, A=18.5, C=24.1, E=76.8, B=84.6, F=86.2}
Referenzen:return(o2.getValue())).compareTo( o1.getValue());
Oracle-Dokumentation - HashMap
TutorialsPoint - Die HashMap-Klasse
Documentation Comparator
LinkedHashMap Documentation