$show=/label

How To Sort HashMap in java Based on Keys and Values

SHARE:

A quick java program guide to HashMap sorting by keys and values. This is achieved by using TreeMap in java which does the sorting internally.

1. Introduction


In this tutorial, We'll learn how to sort HashMap in java based on keys and values. You might have used HashMap widely in your experience but HashMap does not preserve the insertion order and no sorting is done to the keys and values. It just retrieves from its Nodes and LinkedList.

If you have a requirement to sort hashmap by value and sort hashmap by value in java then you need to perform the sorting explicitly because HashMap API is not having the ready-made methods to use. You are at the place now you will learn how to sort HashMap by keys and values using TreeMap. If you answer this then next you will be asked "How to sort HashMap without using TreeMap"

Sorting TreeMap By Value (+ Java 8)

2. HashMap Sort By keys


The below example shows the program to sort the HashMap based on the keys using TreeMap. First, create HashMap and add values to it. Next, pass this hashmap to TreeMap constructor which does sorting by default bu keys.

package com.java.w3schools.blog.java.program.to.strings;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

public class HashMapSortBykey {

 public static void main(String[] args) {

  HashMap idAges = new HashMap<>();

  idAges.put(103, 24);
  idAges.put(104, 35);
  idAges.put(102, 20);
  idAges.put(107, 23);
  idAges.put(105, 45);
  idAges.put(101, 18);

  Set> entrieset = idAges.entrySet();

  Iterator> it = entrieset.iterator();

  System.out.println("HashMap before sorting by key : ");
  while (it.hasNext()) {
   Entry entry = it.next();
   System.out.println("Key : " + entry.getKey() + " - Value - " + entry.getValue());
  }

  System.out.println();
  System.out.println("HashMap after sorting by key : ");

  TreeMap treeMap = new TreeMap<>(idAges);

  Set> set = treeMap.entrySet();

  Iterator> iterator = set.iterator();

  while (iterator.hasNext()) {
   Entry entry = iterator.next();
   System.out.println("Key : " + entry.getKey() + " - Value - " + entry.getValue());
  }

 }

}

Output:

HashMap before sorting by key : 
Key : 101 - Value - 18
Key : 102 - Value - 20
Key : 103 - Value - 24
Key : 104 - Value - 35
Key : 105 - Value - 45
Key : 107 - Value - 23

HashMap after sorting by key : 
Key : 101 - Value - 18
Key : 102 - Value - 20
Key : 103 - Value - 24
Key : 104 - Value - 35
Key : 105 - Value - 45
Key : 107 - Value - 23


3. HashMap Sort By Values


This is quite tricky to sort the map by values. But, You need to create a first comparator that sorts based on the value instead of a key.
  • Create HashMap and add values to it.
  • Get the entrySet() from hashmap.
  • convert enttrySet() to LinkedList<Entry<K, V>>
  • Call Collections.sort() method by passing LinkedList and comparator. This comparator should have comparisons based on value.
  • Create a LinkedHashMap object and add all values of LinkedList.
  • Print LinkedHashMap which is sorted by value.


Note: LinkedHashMap is a subclass of HashMap.

Look at the below program.

Creating HashMap with id as key and age as value.

package com.java.w3schools.blog.java.program.to.strings;

import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

public class HashMapSortByValue {

 private static  HashMap sortByValues(HashMap map) {

  // creating LinkedList object
  List> linkedList = new LinkedList<>(map.entrySet());

  // sorting based on the values.
  Collections.sort(linkedList, new Comparator() {
   public int compare(Object o1, Object o2) {
    return ((Comparable) ((Map.Entry) (o1)).getValue()).compareTo(((Map.Entry) (o2)).getValue());
   }
  });

  // First created LinkHashMap which preserves the insertion order.
  HashMap sortedHashMap = new LinkedHashMap();

  // Iterating over linkedList
  for (Iterator it = linkedList.iterator(); it.hasNext();) {
   Map.Entry entry = (Map.Entry) it.next();

   // adding key, value pair to the map.
   sortedHashMap.put(entry.getKey(), entry.getValue());
  }
  // returning the sorted map.
  return sortedHashMap;
 }

 public static void main(String[] args) {
  // Creating HashMap with id as key and age as value.
  HashMap idAges = new HashMap<>();

  idAges.put(103, 24);
  idAges.put(104, 35);
  idAges.put(102, 20);
  idAges.put(107, 23);
  idAges.put(105, 45);
  idAges.put(101, 18);

  Set> entrieset = idAges.entrySet();

  Iterator> it = entrieset.iterator();

  System.out.println("HashMap before sorting by key : ");
  while (it.hasNext()) {
   Entry entry = it.next();
   System.out.println("Key : " + entry.getKey() + " - Value - " + entry.getValue());
  }

  System.out.println();
  System.out.println("HashMap after sorting by key : ");

  Map sortedMap = sortByValues(idAges);

  Set> set = sortedMap.entrySet();

  Iterator> iterator = set.iterator();

  while (iterator.hasNext()) {
   Entry entry = iterator.next();
   System.out.println("Key : " + entry.getKey() + " - Value - " + entry.getValue());
  }

 }

}

Output:

HashMap before sorting by key : 
Key : 101 - Value - 18
Key : 102 - Value - 20
Key : 103 - Value - 24
Key : 104 - Value - 35
Key : 105 - Value - 45
Key : 107 - Value - 23

HashMap after sorting by key : 
Key : 101 - Value - 18
Key : 102 - Value - 20
Key : 107 - Value - 23
Key : 103 - Value - 24
Key : 104 - Value - 35
Key : 105 - Value - 45

Observe the output which is sorted by values after calling sortByValues() method.

4. Conclusion


In this article, We've seen how to sort HashMap by Keys and Values in Java.

GitHub Code By Key

GitHub Code By Value



COMMENTS

BLOGGER

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,16,Arrays,14,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,5,Collections,22,Collector,1,Command Line,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,80,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,4,Dictionary,1,Difference,1,Download,1,Eclipse,2,Efficiently,1,Error,1,Errors,1,Exception,1,Exceptions,3,Fast,1,Files,9,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,4,Grant,1,Grep,1,HashMap,1,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,5,Iterate,2,Jackson API,3,Java,30,Java 10,1,Java 11,5,Java 12,5,Java 13,2,Java 14,2,Java 8,66,Java 8 Difference,2,Java 8 Stream Conversions,2,java 8 Stream Examples,3,Java 9,1,Java Conversions,11,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,77,java.lang,5,java.util. function,1,jQuery,1,Kotlin,10,Kotlin Conversions,3,Kotlin Programs,6,Lambda,1,lang,29,Leap Year,1,live updates,1,Logging,1,Mac OS,2,Math,1,Matrix,5,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,1,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,21,String,58,String Programs,10,String Revese,1,Swing,1,System,1,Tags,1,Threads,10,Tomcat,1,Tomcat 8,1,Troubleshoot,16,Unix,2,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: How To Sort HashMap in java Based on Keys and Values
How To Sort HashMap in java Based on Keys and Values
A quick java program guide to HashMap sorting by keys and values. This is achieved by using TreeMap in java which does the sorting internally.
JavaProgramTo.com
https://www.javaprogramto.com/2020/04/how-to-sort-hashmap-in-java-based-on-keys-values.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2020/04/how-to-sort-hashmap-in-java-based-on-keys-values.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content