24. Sorting Map By Value - prabhatrocks07/Core-Java-Programming GitHub Wiki
public class SortingMapByValue {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("two", 2);
map.put("ten", 10);
map.put("three", 3);
map.put("five", 3);
map.put("six", 6);
map.put("one", 1);
printMap(map);
System.out.println("************************");
Map<String, Integer> sortedMap = sortByComparator(map);
printMap(sortedMap);
}
private static Map<String, Integer> sortByComparator(Map<String, Integer> map) {
List<Entry<String, Integer>> entries = new LinkedList<>(map.entrySet());
Collections.sort(entries, new Comparator<Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> e1, Entry<String, Integer> e2) {
return e1.getValue().compareTo(e2.getValue());
}
});
HashMap<String, Integer> sortedMap = new LinkedHashMap<>();
for (Entry<String, Integer> entry : entries) {
sortedMap.put(entry.getKey(), entry.getValue());
}
return sortedMap;
}
public static void printMap(Map<String, Integer> map) {
map.forEach((k, v) -> System.out.println(k + " : " + v));
}
}