How to Sort HashMap by Value

10 Sept 2024 | 3 min read

In Java, sorting HashMap by values is complicated because there is no direct method available. If we need to sort the HashMap by values, we should create a Comparator. It compares two elements based on the values.

After that get the Set of elements from the Map and convert Set into the List. Use the Collections.sort(List) method to sort the list of elements by values by passing customized comparator. Now create a new LinkedHashMap and copy the sorted elements into that. Since LinkedHashMap guarantees the insertion order of mappings. We get a HashMap whose values are in sorted order.

Java Collections.sort() method

Java collections class provides a method to sort all list implementations such as LinkedList and ArrayList. There are two overloaded sort methods():

  • sort(List list): It sorts the elements of the List in ascending order of their natural order.
  • sort(List list, Comparator <T>): It sorts the elements of the list according to the order included by the comparator.

Syntax

The method does not return any value. It throws the following exceptions:

ClassCastException: If the list contains elements that are not mutually comparable.

UnsupportedOperationException: If the specified list's list-iterator does not support the set operation.

The difference between sorting HashMap by Keys and Values is that it can have duplicate values but not duplicate Keys. We cannot use TreeMap to sort values because TreeMap sorts elements by Keys.

Example of sort HashMap by Value

In the following example, we have sorted the map in ascending and descending order.

Output:

Before sorting: Company Price Dell	32000 HP	20000 Lenovo	19990 Samsung	36546 Apple	65000 Asus	21478 Sorting values in ascending order: Company Price Lenovo	19990 HP	20000 Asus	21478 Dell	32000 Samsung	36546 MAC Book	65000 Sorting values in descending order: Company Price MAC Book	65000 Samsung	36546 Dell	32000 Asus	21478 HP	20000 Lenovo	19990 

Next TopicJava Tutorial