Skip to content
Related Articles

Related Articles

Java Program to Sort LinkedHashMap By Values
  • Last Updated : 09 Mar, 2021

The LinkedHashMap is just like HashMap with an additional feature of maintaining an order of elements inserted into it. HashMap provided the advantage of quick insertion, search, and deletion, but it never maintained the track and order of insertion which the LinkedHashMap provides where the elements can be accessed in their insertion order. 

Hence LinkedHashMap Is the child class of HashMap. Now, in LinkedHashMap insertion order has to be maintained, so convert the LinkedHashMap into a list and after that print the list in which values are in sorted order.

Illustration:

Input : LinkedHashMap = {{“for”, 2}, {“Geek”, 3}, {“Geeks”, 1}}

Output:  

Key -> Geeks : value -> 1

Key -> for : value -> 2

Key -> Geek : value ->3 

Procedure:

  1. Create an object of LinkedHashMap Class where the object is declared of type Integer and String.
  2. Add elements to the above object created of the map using the put() method. Elements here are key-value pairs.
  3. Retrieve above all entries from the map and convert them to a list using entrySet() method.
  4. Sort the value of the list using the custom comparator.
  5.  Now use the Collections class sort method inside which we are using a custom comparator to compare the value of a map.
  6. Print the above list object using for each loop.

Implementation:



Example 

Java




// java Program to Sort LinkedHashMap by Values
  
// Importing all classes
// from java.util package
import java.util.*;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
  
// Main Class
class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Creating an object of LinkedHashMap Class
        // Decaring object of Integer and String type
        LinkedHashMap<String, Integer> map
            = new LinkedHashMap<>();
        // Adding elements to the object of Map
        // using the put() method
        // Elements here are key-value pairs
        map.put("for", 2);
        map.put("Geek", 3);
        map.put("Geeks", 1);
  
        // Now, getting all entries from map and
        // convert it to a list using entrySet() method
        List<Map.Entry<String, Integer> > list
            = new ArrayList<Map.Entry<String, Integer> >(
                map.entrySet());
  
        // Using collections class sort method
        // and inside which we are using
        // cumstom comparator to compare value of map
        Collections.sort(
            list,
            new Comparator<Map.Entry<String, Integer> >() {
                // Comparing two entries by value
                public int compare(
                    Map.Entry<String, Integer> entry1,
                    Map.Entry<String, Integer> entry2)
                {
  
                    // Substracting the entries
                    return entry1.getValue()
                        - entry2.getValue();
                }
            });
  
        // Iterating over the sorted map
        // using the for each method
        for (Map.Entry<String, Integer> l : list) {
  
            // Printing the sorted map
            // using getKey()  and getValue() methods
            System.out.println("Key ->"
                               + " " + l.getKey()
                               + ": Value ->"
                               + l.getValue());
        }
    }
}
Output
Key -> Geeks: Value ->1
Key -> for: Value ->2
Key -> Geek: Value ->3

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up
Recommended Articles
Page :