Java program to sort a map by values

To sort a Map by its values in Java, you can create a list of map entries and sort it using a custom Comparator that compares values. Here's an example program that demonstrates how to do this:

refe‮:ot r‬theitroad.com
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SortMapByValues {
    public static void main(String[] args) {
        // Create a HashMap with some key-value pairs
        Map<String, Integer> unsortedMap = new HashMap<>();
        unsortedMap.put("Bob", 3);
        unsortedMap.put("Alice", 1);
        unsortedMap.put("Charlie", 2);

        // Create a list of map entries
        List<Map.Entry<String, Integer>> entryList = new ArrayList<>(unsortedMap.entrySet());

        // Sort the list by values using a custom Comparator
        entryList.sort(Comparator.comparing(Map.Entry::getValue));

        // Create a new LinkedHashMap to preserve the insertion order of the entries
        Map<String, Integer> sortedMap = new HashMap<>();
        for (Map.Entry<String, Integer> entry : entryList) {
            sortedMap.put(entry.getKey(), entry.getValue());
        }

        // Print the sorted map
        for (Map.Entry<String, Integer> entry : sortedMap.entrySet()) {
            System.out.println(entry.getKey() + " => " + entry.getValue());
        }
    }
}

In this program, we first create a HashMap called unsortedMap with some key-value pairs. We then create a list of map entries called entryList and initialize it with the entries of unsortedMap.

Next, we sort the list of entries by values using a custom Comparator that compares values. The Comparator.comparing method is used to create a Comparator that compares the values of each entry.

After sorting the list of entries, we create a new HashMap called sortedMap and insert each entry in the sorted order. Note that we use a HashMap here instead of a TreeMap because we want to preserve the insertion order of the entries.

Finally, we iterate through the sorted map using a for-each loop and print out each key-value pair. When you run this program, the output should be:

Alice => 1
Charlie => 2
Bob => 3