Sorting HashMap by values
To sort a HashMap by values in Java, you can use the Map.Entry
interface and the Comparator
interface to create a comparator that compares the values in the map.
Here's an example of how you can sort a HashMap by values in Java:
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;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("A", 5);
map.put("B", 1);
map.put("C", 3);
map.put("D", 2);
map.put("E", 4);
// sort the map by values
Map<String, Integer> sortedMap = sortByValues(map);
// print the sorted map
for (Map.Entry<String, Integer> entry : sortedMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
private static Map<String, Integer> sortByValues(Map<String, Integer> map) {
// create a list of map entries
List<Map.Entry<String, Integer>> list = new LinkedList<>(map.entrySet());
// sort the list by values
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
// create a new map to hold the sorted entries
Map<String, Integer> sortedMap = new LinkedHashMap<>();
// add the sorted entries to the new map
for (Map.Entry<String, Integer> entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
return sortedMap;
}
}
This code defines a sortByValues
method that takes a HashMap as an argument and returns a new LinkedHashMap
with the entries sorted by values.
To sort the map by values, the sortByValues
method first creates a list of Map.Entry
objects from the map using the entrySet
method. It then sorts the list using the Collections.sort
method and a custom Comparator
that compares the values in the Map.Entry
objects.
Finally