How To Course Of Report A Hashmap Yesteryear Values Inwards Ascending Together With Descending Guild Inwards Coffee Eight - Event Tutorial

In the concluding article, I receive got shown you lot how to sort a Map inwards Java 8 yesteryear keys together with today, I'll learn you lot how to sort a Map yesteryear values using Java 8 features e.g. lambda expression, method reference, streams, together with novel methods added into the java.util.Comparator together with Map.Entry classes. In companionship to sort whatever Map e.g. HashMap, Hashtable, LinkedHashMap, TreemMap, or fifty-fifty ConcurrentHashMap, you lot tin post away kickoff acquire fix of entries yesteryear using the entrySet() method together with and thus you lot tin post away acquire the current yesteryear calling the stream() method. The entrySet()  method returns a Set which inherit the stream() method from the java.util.Collection class. Once you lot got the stream, you lot tin post away only telephone telephone the sorted() method which tin post away sort all Map.Entry objects available inwards Stream using a Comparator.

In companionship to compare entries of a Map yesteryear values, you lot tin post away utilisation the newly added Map.Entry.comparingByValue() method from the java.util.Map.Entry class.

This is the counterpart of comparingByKey() method which nosotros receive got used inwards the last article. Both of these methods are overloaded to piece of occupation amongst both Comparable together with Comparator objects.

Once you lot sort the stream, you lot tin post away produce whatever you lot desire to produce e.g. if you lot only desire to impress keys, values, or entries inwards sorted order, only utilisation the forEach() method or if you lot desire a Map which is sorted on values together with thus you lot tin post away utilisation the collect() method of current class.

This method accepts a Collector together with allows you lot to capture all elements of Stream into whatever collection you lot desire to. For example, if you lot desire a sorted map together with thus you lot tin post away utilisation the toMap() method of java.util.stream.Collectors class.



This method is overloaded together with provides a pair of choices, for example, you lot tin post away collect entries inwards whatever sort of map or you lot tin post away too specify the sort of map you lot desire similar for conk along entries inwards sorted order, we'll utilisation the LinkedHashMap. It too allows you lot to suspension ties inwards instance of same values e.g. you lot tin post away accommodate them inwards the companionship you lot desire to.

Btw, If you lot are curious, you lot tin post away too meet the Pluralsight's Map.entrySet() method.

2. Get the current of entries yesteryear calling stream() method.

3. Call the sorted method amongst a Comparator.
4. Use the Map.Entry.comparingByValue() comparator to sort entries yesteryear values.

5. Collect the trial using the collect() method.
6. Use Collectors.toMap() method to acquire the trial inwards around other Map. 

7. Provide LinkedHashMap::new to the concluding parameter to forcefulness it to render a LinkedHashMap, to conk along the sorted companionship preserved.

8. In companionship to sort inwards decreasing order, only contrary the companionship of Comparator using Collections.reverseOrder() or Comparator.reverse() method of Java 8.  

This is the novel method added into Comparator cast inwards Java SE 8. You tin post away farther see The Complete Java MasterClass for the total listing of novel methods added into telephone commutation Java classes e.g. Java Collection Framework, String, together with Comparator, etc. 

 you lot tin post away kickoff acquire fix of entries yesteryear using the  How to Sort a HashMap yesteryear Values inwards Ascending together with Descending Order inwards Java 8 - Example Tutorial

sec Once you lot follow this mensuration you lot volition acquire a Map which is sorted yesteryear values. Now that you lot know the theory together with steps, let's meet the code instance inwards the adjacent department to acquire it right.



Java Program to sort a HashMap yesteryear Values

Here is our consummate Java programme to sort a Map yesteryear values using Java 8 features e.g. novel methods on existing classes inwards Java 8 yesteryear evolving them using default methods together with static methods on interfaces. In this example, I receive got got a Map of the map of items together with their expenses similar rent, utility, transportation, etc.

The Map telephone commutation is String, which represents exceptional together with value is Integer, which is expenses. Our delineate of piece of occupation is to sort the Map yesteryear values to uncovering out which exceptional toll us most together with impress all items inwards their decreasing companionship of values.

import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map;  import static java.util.stream.Collectors.*; import static java.util.Map.Entry.*;  /*  * Java Program to sort a Map yesteryear values inwards Java 8  *   */ public class Main {    public static void main(String[] args) throws Exception {      // a Map amongst string keys together with integer values     Map<String, Integer> budget = new HashMap<>();     budget.put("clothes", 120);     budget.put("grocery", 150);     budget.put("transportation", 100);     budget.put("utility", 130);     budget.put("rent", 1150);     budget.put("miscellneous", 90);      System.out.println("map earlier sorting: " + budget);      // let's sort this map yesteryear values first     Map<String, Integer> sorted = budget         .entrySet()         .stream()         .sorted(comparingByValue())         .collect(             toMap(e -> e.getKey(), e -> e.getValue(), (e1, e2) -> e2,                 LinkedHashMap::new));      System.out.println("map after sorting yesteryear values: " + sorted);      // to a higher house code tin post away live cleaned a fighting yesteryear using method reference     sorted = budget         .entrySet()         .stream()         .sorted(comparingByValue())         .collect(             toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2,                 LinkedHashMap::new));      // straight off let's sort the map inwards decreasing companionship of value     sorted = budget         .entrySet()         .stream()         .sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))         .collect(             toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2,                 LinkedHashMap::new));      System.out.println("map after sorting yesteryear values inwards descending order: "         + sorted);   }  }  Output map earlier sorting: {grocery=150, utility=130, miscellneous=90, rent=1150,  clothes=120, transportation=100} map after sorting yesteryear values: {miscellneous=90, transportation=100,  clothes=120, utility=130, grocery=150, rent=1150} map after sorting yesteryear values in descending order: {rent=1150, grocery=150,  utility=130, clothes=120, transportation=100, miscellneous=90}

You tin post away meet that earlier sorting the map has a random companionship inwards price of values but first, nosotros receive got sorted them inwards the increasing companionship of values together with after nosotros receive got sorted the same Map inwards the decreasing companionship of values, that's why rent comes kickoff because it toll us highest.

Some tips

1) Use static import to shorten the code, when you lot utilisation the static import characteristic to import both Map.Entry together with java.util.stream.Collectors classes you lot tin post away refer their methods without including cast advert similar instead of Collectors.toMap() you lot tin post away only utilisation toMap().

2) Use method reference inwards house of lambda facial expression wherever you lot can. See this article to acquire to a greater extent than close how to convert lambda facial expression to method reference inwards Java 8, if you lot are non familiar amongst that.


That's all close how to sort a Map yesteryear values inwards Java 8. You tin post away meet that it's thus slowly to sort the Map using novel methods added to existing classes. All that is possible because of the default method characteristic of JDK 8, which allows you lot to add together novel methods to existing classes.

Before this enhancement, it wasn't possible inwards Java without breaking the existing customer of interfaces because every bit before long every bit you lot add together a novel method to an interface, all its clients had to implement it.

This is non required anymore if the method is default or static because they are non abstract but concrete methods.


Further Learning
The Complete Java MasterClass
books)
  • What is the default method inwards Java 8? (example)
  • How to bring together String inwards Java 8 (example)
  • How to utilisation filter() method inwards Java 8 (tutorial)
  • How to format/parse the appointment amongst LocalDateTime inwards Java 8? (tutorial)
  • How to utilisation Stream cast inwards Java 8 (tutorial)
  • How to convert List to Map inwards Java 8 (solution)
  • Difference betwixt abstract cast together with interface inwards Java 8? (answer)
  • 20 Examples of Date together with Time inwards Java 8 (tutorial)
  • How to utilisation peek() method inwards Java 8 (example)
  • How to sort the map yesteryear keys inwards Java 8? (example)
  • How to sort the may yesteryear values inwards Java 8? (example)
  • 10 examples of Options inwards Java 8? (example)

  • Thanks for reading this article thus far. If you lot similar this article together with thus delight part amongst your friends together with colleagues. If you lot receive got whatever questions or suggestions together with thus delight driblet a comment.

    P.S.: If you lot only desire to acquire to a greater extent than close novel features inwards Java 8 together with thus delight meet the What's New inwards Java 8 online course of didactics on Pluralsight. It explains all the of import features of Java 8 similar lambda expressions, streams, functional interfaces, Optional, novel Date Time API together with other miscellaneous changes.

    0 Response to "How To Course Of Report A Hashmap Yesteryear Values Inwards Ascending Together With Descending Guild Inwards Coffee Eight - Event Tutorial"

    Post a Comment

    Iklan Atas Artikel

    Iklan Tengah Artikel 1

    Iklan Tengah Artikel 2

    Iklan Bawah Artikel