Java: Sortieren einer ArrayList-HashMap

Hier eine Lösung für eine ArrayList-HashMap Sortierung

Folgende Liste wollen wir sortieren:

ArrayList<HashMap<String, String>> arrayListHashMap = new ArrayList<HashMap<String, String>>();
{
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("name", "Klaus");
hashMap.put("age", "21");
hashMap.put("car", "Audi");
arrayListHashMap.add(hashMap);
}
{
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("name", "Peter");
hashMap.put("age", "44");
hashMap.put("car", "Opel");
arrayListHashMap.add(hashMap);
}
{
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("name", "Axel");
hashMap.put("age", "33");
hashMap.put("car", "VW");
arrayListHashMap.add(hashMap);
}
System.out.println(arrayListHashMap);

Ausgabe: [{car=Audi, age=21, name=Klaus}, {car=Opel, age=44, name=Peter}, {car=VW, age=33, name=Axel}]

Für die Sortierung nutzten wir folgende Funktion:

public static class MapComparator implements Comparator<Map<String, String>> {
    private final String key;
    public MapComparator(String key) {
        this.key = key;
    }
    public int compare(Map<String, String> first, Map<String, String> second) {
        String firstValue = first.get(key);
        String secondValue = second.get(key);
        return firstValue.compareTo(secondValue);
    }
}

Und so wird die Funktion dann genutzt:

Collections.sort(arrayListHashMap, new MapComparator("name"));
System.out.println(arrayListHashMap);

Ausgabe: [{car=VW, age=33, name=Axel}, {car=Audi, age=21, name=Klaus}, {car=Opel, age=44, name=Peter}]

 

Wer jetzt die Ausgabe noch in umgekehrter Reihenfolge haben möchte, taucht einfach die Variablen der Rückgabe:

return secondValue.compareTo(firstValue);

 

 

 

 

Neuen Kommentar hinzufügen

Sie können einen Kommentar abgeben, indem Sie das unten stehende Formular ausfüllen. Nur Text. Web- und E-Mail-Adressen werden in anklickbare Links umgewandelt.