How to convert List of Objects to map using object's fields in Java

yateen :

I have Following use case:

    User Object is as followed:
    UserId      payload
    123         abc1
    123         abc2
    456         pqr1
    456         pqr2
    678         xyz1

And after iterating above list<User Object>, Result should be like: 
{123=[abc1, abc2], 456=[pqr1,pqr2], 678=[xyz1]}

so that I can use value(list of other objects) for key(123) for further processing. What will be best way to do it?

I have tried below but not sure how performance efficient if object size increases.

Map<String,List<String>> userMap = new HashMap<String, List<String>>();     
for(User user: users) {
  String userId = user.getUserId();
  List<String> payloads = new ArrayList<String>();
  if(userMap.containsKey(userId)) {
      payload = userMap.get(userId);
                  payloads.add(user.getPayload());
      userMap.put(userId, payloads);
  }
  else {
      payloads.add(user.getPayload());
      userMap.put(user.getUserId(), payloads);
  }
 }
Jacob G. :

The easiest way would be to stream the List and use Collectors#groupingBy and Collectors#mapping:

Map<String, List<String>> userMap = users.stream()
    .collect(Collectors.groupingBy(User::getUserId, 
        Collectors.mapping(User::getPayload, Collectors.toList())));

Output:

{123=[abc1, abc2], 456=[pqr1, pqr2], 678=[xyz1]}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

How to convert List of Objects into Map<Object, Object> using Java 8 Lambdas

How to convert a nested list of objects into a map (Map<Integer, Map<Integer, Object>>) using lambdas/streams

How to convert a list of objects into a map in Java 8?

How to group a list of objects into a Map of Map based on object's attributes in Java?

How to convert a list of java objects to Map<String, Map<String, String>>

Convert list of complex objects to Map using Java 8

Group the list of Objects and convert to a map using java8

how to convert a List of objects to map

How to convert List of Map into Map of List using Java Streams

Convert List<Map<String, Object>> to Map<String, List<Map<String, Object>>> using Java 8 streams API

How to convert JSON fields into a JAVA map using GSON

How convert object list into map?

Using Jackson how to map JSONs to objects when it contains an object list

How to sum multiple fields of a list of objects using stream in java

How to convert list of objects to list of map

How to map selected fields from JSON to Java Object using gson

Convert Map<Integer, List<Object>> to Map<Integer, Map<String, Map<LocalDate, Integer>>> using Java stream API

How do you use java stream api to convert list of objects into a nested map based on information stored inside object?

How do you use java stream api to convert list of objects into a nested map based on information stored inside object?

Convert List of object arrays to list of objects in Java

How to convert a List into a Map using List as key in Java

Convert a List of objects to a Map using Streams

How to update object's array of objects using map function

Use Collectors to convert List to Map of Objects - Java

How to convert object of map into array of objects?

Java: How to convert List to Map

How to convert a Map to List in Java?

How to convert an object into a map using Java-8

How to convert List to Map with indexes using stream - Java 8?