So sortieren Sie eine HashMap nach Schlüsseln in Java

Wir haben gesehen, wie eine HashMap nach Werten sortieren.  In diesem Tutorial erfahren Sie, wie Sie Elemente mithilfe der TreeMap-Klasse nach Schlüsseln sortieren. Wir wissen, dass HashMap die Reihenfolge des Einfügens von Elementen standardmäßig nicht beibehält. In Java können sowohl Map als auch HashMap nach Schlüsseln oder Werten sortiert werden.

1- Sortieren Sie HashMap mit TreeMap

Dieser Code sortiert HashMap nach Schlüsseln und basiert auf der Verwendung von   die TreeMap.

import java.util.HashMap; 
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class Triclés {

public static void main(String[] args) {

Map< Zeichenfolge,Zeichenfolge> hmap = neue HashMap< Zeichenfolge,Zeichenfolge> ();
hmap.put("4", "vier");
hmap.put("2", "zwei");
hmap.put("3", "drei");
hmap.put("1", "eins");

Set set = hmap.entrySet();
Iterator-Iterator = set.iterator();
System.out.println("Vor dem Sortieren:");
while(iterator.hasNext()) {
Map.Entry me = (Map.Entry)iterator.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}

Karte sortedMap = new TreeMap(hmap);

Set2 = sortedMap.entrySet();
Iterator iterator2 = set2.iterator();
System.out.println("Nach dem Sortieren:");
while(iterator2.hasNext()) {
Map.Entry me2 = (Map.Entry)iterator2.next();
System.out.print(me2.getKey() + ": ");
System.out.println(me2.getValue());
}
}
}
Ausgabe:

Vor der Sortierung: 
3: three
2: two
1: one
4: four
Nach der Sortierung:
1: one
2: two
3: three
4: four

2- HashMap mit Comparator oder Comparable

Sie können eine Map auch sortieren, indem Sie die Schlüssel in eine Liste kopieren, die die Schnittstelle implementiert java.util.List und sortieren Sie dann die Elemente, indem Sie die Collections.sort(). Hier können Sie beide Sortierschnittstellen verwenden: Comparator oder Vergleichbar  und wählen Sie die aufsteigende oder absteigende Reihenfolge, die Sie anzeigen möchten. Sobald die Schlüsselliste erstellt wurde, können Sie die Schlüssel und Werte in eine neue HashMap kopieren.

import java.util.Collections; 
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

public class Triclés {

public static HashMap< String, String> sortHashMap(Karte< String, String> hmap){
Liste< Map.Entry< String, String> > list =
neue LinkedList< Map.Entry< String, String> > ( hmap.entrySet() );
Collections.sort( Liste, neuer Komparator< Map.Entry< String, String> > (){
public int compare
(Map.Entry< String, String> o1, Map.Entry< String, String> o2 )
{
//zwei Schlüssel vergleichen
return (o1.getKey()).compareTo( o2.getKey() );
}
});

//Erstellen einer neuen HashMap aus LinkedList
HashMap< String, String> hmapTriee = new LinkedHashMap< String, String> ();
für (Map.Entry< String, String> entry : list)
{
hmapTriee.put( entry.getKey(), entry.getValue() );
}
return hmapTriee;
}

public static void main(String[] args) {

final HashMap< String, String> hmap = neue HashMap< String, String> ();

hmap.put("4", "vier");
hmap.put("2", "zwei");
hmap.put("3", "drei");
hmap.put("1", "eins");

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

System.out.println("Nach dem Sortieren: "+sortHashMap(hmap));
}
}
Output:

Vor dem Sortieren: {3=drei, 2=zwei, 1=eins, 4=vier}
Nach dem Sortieren: {1=eins, 2=zwei, 3=drei, 4=vier}