Java – Sorting HashMap by Value code.
//largest to smallest
private HashMap<String, Integer> sortByValueInverse(HashMap<String, Integer> unsortMap) {
// Convert Map to List
List<Map.Entry<String, Integer>> list
= new LinkedList<Map.Entry<String, Integer>>(unsortMap.entrySet());
// Sort list with comparator, to compare the Map values
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1,
Map.Entry<String, Integer> o2) {
return (o2.getValue()).compareTo(o1.getValue());
}
});
// Convert sorted map back to a Map
HashMap<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
for (Iterator<Map.Entry<String, Integer>> it = list.iterator(); it.hasNext();) {
Map.Entry<String, Integer> entry = it.next();
sortedMap.put(entry.getKey(), entry.getValue());
}
return sortedMap;
}
Java – Print Top 10 HashMap by Value code
private void printTop10Largest(HashMap<String, Integer> notSortedMap) {
HashMap<String, Integer> valueSortedMap = sortByValueInverse(notSortedMap);
Iterator<String> it = valueSortedMap.keySet().iterator();
String key;
int value;
for (int i = 1; i < 11; i++) {
key = it.next();
value = valueSortedMap.get(key);
System.out.println(i + "," + key + "," + value);
}
}