I have a list variable created like this:
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
In my Android application, this list gets populated.
just an example:
Map<String, String> map1 = new HashMap<String, String>(); map.put("name", "Josh"); ... Map<String, String> map2 = new HashMap<String, String>(); map.put("name", "Anna"); ... Map<String, String> map3 = new HashMap<String, String>(); map.put("name", "Bernie"); ... list.add(map1); list.add(map2); list.add(map3);
I am using list
to show results in a ListView
by extending BaseAdapter
and implementing the various methods.
My problem: I need to sort list
in alphabetical order based on the map's key name
Question: What is a simple way to sort list
in alphabetical order based on the map's key name?
I can't seem to wrap my head around this. I have extracted each name from each Map
into a String
array, and sorted it(Arrays.sort(strArray);
). But that doesn't preserve the other data in each Map
, so i'm not too sure how i can preserve the other mapped values
Sort HashMap by Values using Comparator Interface After that get the Set of elements from the Map and convert Set into the List. Use the Collections. sort(List) method to sort the list of elements by values by passing customized comparator. Now create a new LinkedHashMap and copy the sorted elements into that.
HashMaps are a good method for implementing Dictionaries and directories. Key and Value can be of different types (eg - String, Integer). We can sort the entries in a HashMap according to keys as well as values.
The following code works perfectly
public Comparator<Map<String, String>> mapComparator = new Comparator<Map<String, String>>() { public int compare(Map<String, String> m1, Map<String, String> m2) { return m1.get("name").compareTo(m2.get("name")); } } Collections.sort(list, mapComparator);
But your maps should probably be instances of a specific class.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With