Sort map by value in java

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}

Leave a comment