public class SortMapByKeyValue {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("one", 1);
map.put("two", 2);
map.put("three", 3);
map.put("four", 4);
map.put("five", 5);
System.out.println("Unsorted Map........" + map);
System.out.println("Sorting By Key......" + SortMap.getByKey(map));
System.out.println("Sorting By Value......" + SortMap.getByValue(map));
}
}
class SortMap {
public static Map<String, Integer> getByKey(Map<String, Integer> map){
Map<String, Integer> sortedMap = new TreeMap<>();
sortedMap.putAll(map);
return sortedMap;
}
public static Map<String, Integer> getByValue(Map<String, Integer> map){
Map<String, Integer> sortedMap = new TreeMap<>(new MapValueComparator(map));
sortedMap.putAll(map);
return sortedMap;
}
}
class MapValueComparator implements Comparator<String> {
Map<String, Integer> map;
public MapValueComparator(Map<String, Integer> map) {
this.map = map;
}
@Override
public int compare(String key1, String key2) {
return map.get(key1).compareTo(map.get(key2));
}
/*@Override
public int compare(Object key1, Object key2) {
Comparable<Integer> valueA = map.get(key1);
Comparable<Integer> valueB = map.get(key2);
return valueA.compareTo((Integer) valueB);
}*/
}