In this tutorial we will take a look at how to convert a Java Collection List to a Map, there are multiple ways in which you can do so, we will take a look at using Streams,
Example: Student.javaLet us first create our Class called Student,
public class Student {
int studentId;
String studentName;
int studentAge;
public Student(int studentId, String studentName, int studentAge) {
this.studentId = studentId;
this.studentName = studentName;
this.studentAge = studentAge;
}
public int getStudentId() {
return studentId;
}
public void setStudentId(int studentId) {
this.studentId = studentId;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public int getStudentAge() {
return studentAge;
}
public void setStudentAge(int studentAge) {
this.studentAge = studentAge;
}
@Override
public String toString() {
return "Student{" +
"studentId=" + studentId +
", studentName='" + studentName + '\'' +
", studentAge=" + studentAge +
'}';
}
}
ListToMapExample.java
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* Java 8 Example to Convert a
* Collection List Object into
* a Map
*
* Author: Code2care.org
* Date: 03-Apr-2022
* Version: 1.0
*
*/
public class ListToMapExample {
public static void main(String[] args) {
//Step 1: Create some Student Objects
Student student1 = new Student(1, "Sam", 19);
Student student2 = new Student(2, "Mike", 18);
Student student3 = new Student(3, "Alex", 21);
//Step 2: Add them to a List
List studentList = new ArrayList<>();
studentList.add(student1);
studentList.add(student2);
studentList.add(student3);
//Step 3: Converting Student List to a Map using Stream
Map<Integer, Student> studentMap = (Map<Integer, Student>) studentList.stream()
.collect(Collectors.toMap(Student::getStudentId, Function.identity()));
//Step 4: Let's print the results
for (Map.Entry<Integer, Student> entry : studentMap.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}

Note that the key that you identify from the List for the Map should be unique or else you will get java.lang.IllegalStateException: Duplicate key
Exception in thread "main" java.lang.IllegalStateException: Duplicate key 2 (attempted merging values Student{studentId=2, studentName='Mike', studentAge=18} and Student{studentId=2, studentName='Mike', studentAge=18})
at java.base/java.util.stream.Collectors.duplicateKeyException(Collectors.java:133)
at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:180)
at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at ListToMapExample.main(ListToMapExample.java:35)
Have Questions? Post them here!
- Create a Zip file using Java Code programmatically
- Eclipse : A java Runtime Environment (JRE) or Java Development kit (JDK) must be available
- How to Sort a LinkedList in Java
- Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver
- How to declare and initialize Array in Java Programming
- [Fix] java: integer number too large compilation error
- Java JDBC Connection with MySQL Driver in VS Code + Troubleshooting
- Reading .xls and .xlsx Excel file using Apache POI Java Library
- IntelliJ: Error: Could not find or load main class, java.lang.ClassNotFoundException
- How to get Client IP address using Java Code Example
- Truncate table using Java JDBC Example
- Struts 2 : There is no Action mapped for namespace [/] and action name [form] associated with context path [/proj]
- How to get file path in Idea IntelliJ IDE
- Java Generics explained with simple definition and examples
- Java SE 8 Update 301 available with various bug fixes and security improvements
- Java: Collect Stream as ArrayList or LinkedList
- Java JDBC Connection with PostgreSQL Driver Example
- How to check if Java main thread is alive
- How to fix Java nio NoSuchFileException wile reading a file
- Java 8+ get Day of the Week Examples with LocalDateTime, DateTime, ZonalDateTime and Instant classes
- Ways to Convert Integer or int to Long in Java
- [Java] How to throws Exception using Functional Interface and Lambda code
- [Fix] Spring Boot: mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
- Java: The value of the local variable string is not used
- Java JDBC: Insert Java 8 LocalDate and Time using PreparedStatement
- Convert Java Map Collection Object to JSON String using Jackson - Java
- How to connect to SFTP location using Terminal command - FTP
- How to add multiple spaces between html page text - Html
- Failed to load resource: net::ERR_CACHE_MISS PHP - PHP
- Facebook, Messenger, and Instagram down in many regions - UK, Europe, Australia - Facebook
- How to install Python on Ubuntu - Ubuntu
- Fix bash: script.sh: Permission denied Error - Bash
- Clear Screen shortcut macOS Terminal - MacOS