Sorting HashMap by value in java

Published on July 9, 2024

import java.util.*;
 
public class SortHashMapByValue {
    public static LinkedHashMap<Character, Integer> sortByValue(Map<Character, Integer> map) {
        // Convert HashMap to a List of Map entries
        List<Map.Entry<Character, Integer>> list = new LinkedList<>(map.entrySet());
 
        // Sort the list using a comparator to compare values in descending order
        list.sort((entry1, entry2) -> entry2.getValue().compareTo(entry1.getValue()));
 
        // Create a LinkedHashMap to maintain the sorted order
        LinkedHashMap<Character, Integer> sortedMap = new LinkedHashMap<>();
        for (Map.Entry<Character, Integer> entry : list) {
            sortedMap.put(entry.getKey(), entry.getValue());
        }
 
        return sortedMap;
    }
 
    public static void main(String[] args) {
        Map<Character, Integer> freq = new HashMap<>();
        freq.put('a', 5);
        freq.put('b', 3);
        freq.put('c', 8);
 
        Map<Character, Integer> sortedMap = sortByValue(freq);
 
        for (Map.Entry<Character, Integer> entry : sortedMap.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}