import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
class MyComparator implements Comparator<Entry<String, Integer>> {
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
}
class Util {
public static Map<String, Integer> sortByComparator(
Map<String, Integer> unsortMap) {
List<Entry<String, Integer>> list = new LinkedList<Entry<String, Integer>>(
unsortMap.entrySet());
Collections.sort(list, new MyComparator());
Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
for (Entry<String, Integer> entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
return sortedMap;
}
}
public class Main {
public static void main(String[] args) {
Map<String, Integer> unsortMap = new HashMap<String, Integer>();
unsortMap.put("B", 5);
unsortMap.put("A", 8);
unsortMap.put("D", 2);
unsortMap.put("C", 7);
System.out.println("Before sorting......");
System.out.println(unsortMap);
Map<String, Integer> sortedMapAsc = Util.sortByComparator(unsortMap);
System.out.println(sortedMapAsc);
}
}