Java – Convert List to Map

This tutorial shows the different ways to convert a List to Map in Java.

1- Java 7 & before

With Java 7 and older releases, the only way to convert a List to Map is to iterate over the list and populate the map manually.

In the following example, we implement a utility method which accepts a list of Student objects and populates out of it a HashMap with id as a key and name as a value.

2- Java  8

With Java 8, you can convert a List to Map in one line using stream() and Collectors.toMap() utility methods.

Collectors.toMap() method collects a stream as a Map and uses its arguments to decide what key/value to use.

2.1- Java 8 – Handle duplicate keys

Collectors.toMap() fails when converting a list with duplicate items.

In order to handle duplicates, you can pass a third argument which informs toMap() which value to consider when facing duplicate items.

In the following example, we decide to consider the old value or in another meaning to keep the existing value without update each time the map faces a duplicate:

If you want to override the existing value on duplicates, use (oldValue, newValue) -> newValue

2.2- Java 8 – Preserve list order

In order to preserve the order of the list items inside the Map, you can pass another parameter to Collectors.toMap() which decides what type of map to use. LinkedHashMap is well known in preserving the order of its entries.


0 0 votes
Article Rating

Hussein Terek

Owner of, I have a passion for software engineering and everything related to Java environment.

1 Comment
Newest Most Voted
Inline Feedbacks
View all comments
2 years ago

At least you described Collectors.toMap() feature in concise way…good approach