繁体   English   中英

如何分组清单 <Map<String,Object> &gt;到地图 <String,List<Map<String,Object> &gt;在Java8中

[英]How to group List<Map<String,Object>> to Map<String,List<Map<String,Object>> in Java8

我有一个List<Map<String,Object>>

[ {key1: object1a, key2: object2a, key3: object3a}, 
  {key1: object1a, key2: object2a, key3: object3a}, 
  {key1: object1b, key2: object2b, key3: object3b}, 
  {key1: object1b, key2: object2b, key3: object3b}, 
  ...
]

我想将其按第三个值分组,以获得Map<String,List<Map<String,Object>>>

{ object3a: [ {key1: object1a, key2: object2a}, 
              {key1: object1a, key2: object2a}
            ],
  object3b: [ {key1: object1b, key2: object2b}, 
              {key1: object1b, key2: object2b}
            ],
  ...
}

使用Collectors.groupingBy?是否可以Collectors.groupingBy? 方法,如何?

该请求不是纯粹的分组操作,因为您想通过删除分组值来修改元素。

如果地图是可变的,则仍然可能并且非常容易:

List<Map<String,String>> list= …
Map<String,List<Map<String,String>>> map=
  list.stream().collect(Collectors.groupingBy(m->m.remove("key3")));

请注意,我在此处使用与问题的当前版本匹配的键"key3" 为了使其适应您的原始问题,您必须将"key3"替换为"sample3"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM