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);