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