Convert list of objects to /from map in java 8 lambda stream (example)

  • Given the list of objects, convert list of objects to map.
  • We will use lambda streams to convert list objects to map & vice versa.
  • We will create Person class & we will convert list of person objects to/from map.

1. Convert list of objects to/from map in java8 lambda stream

  1. Convert list of objects to Map <Key,Value>
    • We will convert List<Person> to Map<String,Person>
  2. Convert Map<Key,Value> to list of objects.
    1. Convert Map<String,Person> to List<String>
      • Convert map of key value pairs to List of Keys
    2. Convert Map<String,Person> to List<Person>
      • Convert map of key value pairs to List of Values

2. Program – convert list of objects to/from map in java8 (lambda streams)

2.1.) Person Class:

  • Person class containing required data members is as follows.
public class Person {
 private String firstName;
 private String lastName;
 private String uniqueId;

 public Person(String firstName, String lastName,
   String uniqueId) {
  this.firstName = firstName;
  this.lastName = lastName;
  this.uniqueId = uniqueId;
 }

 public String toString() {
     return "[" + firstName + " " + lastName +
         " " + uniqueId +"]";
 } 

 public String getUniqueId() {
  return uniqueId;
 }

 public void setUniqueId(String uniqueId) {
  this.uniqueId = uniqueId;
 } 
}

2.2. ListMapConversion Class:

  • ListMapConversion class is responsible for following operations
    1. Convert List<Person> to Map<String,Person>
    2. Convert Map<String,Person> to List<String> (List of keys).
    3. Convert Map<String,Person> to List<Person> (List of values).
package org.learn.ConvertListToMap;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class ListMapConversion 
{
    public static void main( String[] args )
    {
     List <Person> personList = new ArrayList<Person>();
     
  personList.add(new Person("Mike", "harvey", "100268"));
  personList.add(new Person("Nick", "young", "32654"));
  personList.add(new Person("Jack", "slater", "123642"));
  
  System.out.println("1. Convert List of objects to map :");
  Map<String, Person> mapIdToPerson = convertListToMap(personList);
  
     System.out.println("\n2. Convert Map to list of objects :");
  convertMapToList(mapIdToPerson);
    }
    
    private static Map<String, Person> convertListToMap(List <Person> personList) {
     Map<String, Person>mapIdToPerson = null;
     mapIdToPerson = personList.stream()
            .collect(
           Collectors
           .toMap(
             Person::getUniqueId, 
             person->person)
              );
     
     System.out.println(mapIdToPerson);
     return mapIdToPerson;
    }
    
    private static void convertMapToList(Map<String, Person>mapIdToPerson) {
     
     System.out.println("2.1. List of keys :");
     List<String>uniqueIdList = new ArrayList<>(mapIdToPerson.keySet());
     System.out.println(uniqueIdList);
     
     System.out.println("\n2.2. List of person objects :");
     List<Person>personList = new ArrayList<>(mapIdToPerson.values());
     System.out.println(personList);     
    }
}

3. Output – convert list of objects to/from map in java (lambda streams)

1. Convert List of objects to map :
{32654=[Nick young 32654], 123642=[Jack slater 123642], 100268=[Mike harvey 100268]}

2. Convert Map to list of objects :
2.1. List of keys :
[32654, 123642, 100268]

2.2. List of person objects :
[[Nick young 32654], [Jack slater 123642], [Mike harvey 100268]]
Scroll to Top