import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SortMapByValue {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(1, “A”);
map.put(2, “D”);
map.put(3, “C”);
map.put(4, “B”);
map.put(5, “E”);
map.put(6, “F”);
// convert map into list
List<Map.Entry<Integer, String>> listMap = new ArrayList<>(map.entrySet());
// sort list based on comparetor java 8
Collections.sort(listMap, (o1, o2) -> o1.getValue().compareTo(o2.getValue()));
//Alternative way
Collections.sort(listMap, new Comparator<Map.Entry<Integer, String>>() {
@Override
public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) {
return o1.getValue().compareTo(o2.getValue()); // sorted by ASC order
// return (o2.getValue()).compareTo((o1.getValue())); // sorted// by DEC Order
}
});
// Create a new map for storing sorted data
Map<Integer, String> sortedMap = new HashMap<Integer, String>();
for (Map.Entry<Integer, String> sortedList : listMap) {
sortedMap.put(sortedList.getKey(), sortedList.getValue());
}
// Print Original Map
System.out.println(“Original Map:” + map);
// Print Sorted Map
System.out.println(“Sorted Map By Value:” + sortedMap);
}
}
Output:
Original Map:{1=A, 2=D, 3=C, 4=B, 5=E, 6=F}
Sorted Map By Value:{1=A, 2=D, 3=C, 4=B, 5=E, 6=F}