如何将 List<Map<String,Object>> 分组到 Java8 中的 Map<String,List<Map<String,Object>>
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?
方法,如何实现?
请求不是纯分组操作,因为您希望通过删除分组值来修改元素。
如果地图是可变的,它仍然是可能的并且很容易:
List<Map<String,String>> list= …
Map<String,List<Map<String,String>>> map=
list.stream().collect(Collectors.groupingBy(m->m.remove("key3")));
请注意,我在这里使用的关键字 "key3"
与问题的当前版本相匹配。要使其适应您的原始问题,您必须将 "key3"
替换为 "sample3"
。
我有一个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?
方法,如何实现?
请求不是纯分组操作,因为您希望通过删除分组值来修改元素。
如果地图是可变的,它仍然是可能的并且很容易:
List<Map<String,String>> list= …
Map<String,List<Map<String,String>>> map=
list.stream().collect(Collectors.groupingBy(m->m.remove("key3")));
请注意,我在这里使用的关键字 "key3"
与问题的当前版本相匹配。要使其适应您的原始问题,您必须将 "key3"
替换为 "sample3"
。