Sort HashMap by value

Hi!! Welcome to flower brackets blog. Today we are going to learn sort hashmap by value.

sort hashmap by value

So to sort hashmap we have to insert some key and values and create a linked list from the map entries.

Also read – merge sort java

Hashmap does not maintain order by default. If there is a need we need to sort it explicitly based on requirement.

Now let’s see an example,

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 HashMapByValue 
{
   public static void main(String[] args) 
   {
      HashMap<String, Integer> hash = new HashMap<String, Integer>(); 
      hash.put("Toyota", 78); 
      hash.put("Skoda", 69); 
      hash.put("Honda", 93); 
      hash.put("Audi", 59); 
      hash.put("Chevrolet", 39); 
      hash.put("Hyundai", 56); 
      Map<String, Integer> map = sortByValue(hash); 

      // printing sorted HashMap 
      for(Map.Entry<String, Integer> me : map.entrySet()) 
      { 
         System.out.println("Key = " + me.getKey() + ", Value = " + me.getValue()); 
      }
   }

   // method sort HashMap by value 
   public static HashMap<String, Integer> sortByValue(HashMap<String, Integer> hm) 
   { 
      // creating list from elements of HashMap
      List<Map.Entry<String, Integer> > list = 
new LinkedList<Map.Entry<String, Integer> >(hm.entrySet());

      // sorting list 
      Collections.sort(list, new Comparator<Map.Entry<String, Integer> >()
      { 
         public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) 
         { 
            return (o1.getValue()).compareTo(o2.getValue()); 
         } 
      }); 

      HashMap<String, Integer> ha = new LinkedHashMap<String, Integer>(); 
      for(Map.Entry<String, Integer> me : list) 
      { 
         ha.put(me.getKey(), me.getValue()); 
      } 
      return ha;
   }
}

Output:

Key = Chevrolet, Value = 39
Key = Hyundai, Value = 56
Key = Audi, Value = 59
Key = Skoda, Value = 69
Key = Toyota, Value = 78
Key = Honda, Value = 93

Related Posts