如何使用Java中的对象字段将对象列表转换为映射

时间:2019-08-13 18:43:53

标签: java collections

我有以下用例:

    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]}

以便我可以将value(其他对象的列表)用于key(​​123)进行进一步处理。 最好的方法是什么?

我在下面尝试过,但是不确定如果对象大小增加,性能如何提高。

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);
  }
 }

2 个答案:

答案 0 :(得分:4)

最简单的方法是const jsondata = lessonviewdata.toJSON() console.log(jsondata.viewed)并使用Collectors#groupingByCollectors#mapping

centerTitle: true

输出:

build(BuildContext context)

答案 1 :(得分:0)

另一种可能的解决方案是使用Guavas internal