【发布时间】:2019-04-01 15:54:50
【问题描述】:
我有以下内容:List<Map<String, Object>>。我想使用流获得Map<String, List<Object>。此映射的键将是键,它在列表中重复。基本上是一对多的,这将是数据的一个例子:
[
{ id: "a", name: "AAA"}
{ id: "a", name: "BBB"}
{ id: "b", name: "XXX"}
{ id: "b", name: "YYY"}
]
我想获得:
{
a: ["AAA", "BBB"],
b: ["XXX", "YYY"]
}
所以,这个新地图是根据之前列表中的 id 进行分组的。
【问题讨论】:
-
IMO 使用对象而不是
Map,因为它的过程很简单。class MyObject{ String id; String name;}并使用以下代码来获得最终结果:list.stream() .collect(Collectors.groupingBy(MyObject::getId, Collectors.mapping(MyObject::getName, Collectors.toList())));
标签: java java-8 java-stream grouping