How try like this,
The method to sort Map based on Value DESC
public static Map<Character, Integer> mapSortedByValues(Map<Character, Integer> map) {
List<Map.Entry<Character, Integer>> entryList = new LinkedList<Map.Entry<Character, Integer>>(map.entrySet());
Collections.sort(entryList,
new Comparator<Map.Entry<Character, Integer>>() {
@Override
public int compare(Map.Entry<Character, Integer> e1, Map.Entry<Character, Integer> e2) {
return (e1.getValue()).compareTo(e2.getValue());
}
}
);
Collections.reverse(entryList); //Reverse value DESC
Map<Character, Integer> sortedMap = new LinkedHashMap<Character, Integer>();
for (Map.Entry<Character, Integer> entry : entryList)
sortedMap.put(entry.getKey(), entry.getValue());
return sortedMap;
}
Testing value sorting;
public static void main(String[] args) {
LinkedHashMap<Character, Integer> map = new LinkedHashMap<Character, Integer>();
map.put('a', 7);
map.put('b', 9);
map.put('c', 6);
Map sortedMap = mapSortedByValues(map);
System.out.println(sortedMap);
}
Will output
{c=9, a=7, b=6}