Java Stream List to Map

Java Stream List to Map

In this post, we will see how to convert List to Map using Stream in java 8.

Collectors’s toMap() can be used with Stream to convert List to Map in java.

Consider a class Named Movie which have 3 fields – id, name and genre

πŸ’» Awesome Tech Resources:
  • Looking for βš’οΈ tech jobs? Go to our job portal.
  • Looking for tech events? Go to tech events πŸ—“οΈ Calendar.️

Create a list of movies and convert with to map with name as key and genre as value.

Create a class Named ConvertListToMapMain

Output:

{Interstellar=SciFi, Matrix=SciFi, The Hangover=Comedy, Forest gump=Comedy, 3 idiots=Comedy}
moviesMap contains name as key and genre as value.
We can also use method references instead of lamda expressions.

What happens in case of a duplicate key?

In case, duplicate keys are present, then it will throw java.lang.IllegalStateException exception.

Let’s say we have two movies with name Matrix

When you run ConvertListToMapMain again, you will get below output:
Output:

Exception in thread “main” java.lang.IllegalStateException: Duplicate key Sci Fi
at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)
at java.util.HashMap.merge(HashMap.java:1254)
at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)
at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
at org.arpit.java2blog.ConvertListToMapMain.main(ConvertListToMapMain.java:14)

To resolve this issue, we need to pass merge BinaryOperator function to Collectors.toMap().

When you run ConvertListToMapMain again, you will get below output:
Output:

{Matrix=Comedy, Interstellar=SciFi, Forest gump=Comedy, 3 idiots=Comedy}

What if you want specific Map such as TreeMap?

You can pass constructor method reference to Collectors.toMap() to get specific map.

When you run ConvertListToMapMain again, you will get below output:
Output:

{3 idiots=Comedy, Forest gump=Comedy, Interstellar=SciFi, Matrix=Comedy}

As you can see, we have TreeMap which is sorted by name.

Get multiMap with Collectors.groupingBy()

In case, you want movie grouped by genre as key and name as value, then you can use Collectors.groupingBy() and Collectors.mapping as below:

Output:

{Comedy=[3 idiots, Forest gump, The Hangover], SciFi=[Interstellar, Matrix]}

As you can see, moviesGenMap has genre as key and list of movies name as value.

Excercise

Given a list of Employee objects, you need to convert list to Map with name as key and age as value. In case, there are duplicate keys, then you need to preserve old value.
Here is the definition of Employee class.

That’s all about Java Stream List to Map


import_contacts

You may also like:

Related Posts

  • Convert Date to LocalDate in java
    12 January

    Java Date to LocalDate

    In this post, we will see how to convert Date to LocalDate in java. Sometimes, we may need to convert Date to new Java 8 APIs and vice versa. There are multiple ways to convert Date to LocalDate in java. Read also: Convert LocalDate to Date in java πŸ’» Awesome Tech Resources: Looking for βš’οΈ […]

  • Convert LocalDate to Date in java
    11 January

    Java LocalDate to Date

    In this post, we will see how to convert LocalDate to Date. Java 8 has introduced a lot of new APIs for Date and time. There can be many ways to convert Java LocalDateTime to date. πŸ’» Awesome Tech Resources: Looking for βš’οΈ tech jobs? Go to our job portal. Looking for tech events? Go […]

  • Convert LocalDateTime to Timestamp in java
    18 November

    Convert LocalDateTime to Timestamp in Java

    In this post, we will how to convert LocalDateTime to Timestamp . Before learning how to convert localdatetime to timestamp, let us learn about LocalDateTime and Timestamp, and understand the importance of this conversion. LocalDateTime LocalDateTime was introcuded in Java 8. LocalDateTime can be imported time package: import java.time.LocalDateTime; LocalDateTime is an immutable object used […]

  • 29 February

    Java long to String

    In this post, we will see how to convert long to String in java. There are lot of ways to convert long to String.Let’s see each one by one. Using Long.toString() You can use Long class toString() method to convert long to String. πŸ’» Awesome Tech Resources: Looking for βš’οΈ tech jobs? Go to our […]

  • Convert LocalDateTime to Date in Java
    15 May

    Java LocalDateTime to Date

    In this post, we will see how to convert LocalDateTime to Date. Java 8 has introduced a lot of new APIs for Date and time. There can be many ways to convert Java LocalDateTime to date. πŸ’» Awesome Tech Resources: Looking for βš’οΈ tech jobs? Go to our job portal. Looking for tech events? Go […]

  • 20 October

    Java Array to Set

    In this post, we will learn java array to set conversion. There are many ways to convert array to set. 1. Using Java 8’s Stream If you are using Java 8, I would recommend using this method. πŸ’» Awesome Tech Resources: Looking for βš’οΈ tech jobs? Go to our job portal. Looking for tech events? […]

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Subscribe to our newletter

Get quality tutorials to your inbox. Subscribe now.