stream流如何对查询出来的集合通过一个通过一个字段分组并对分组后的另一个字段求和 形成一个map集合
时间: 2023-12-03 12:42:05 浏览: 90
stream流的简单使用
假设你有一个名为`list`的集合,其中包含以下元素:
```
[
{ id: '001', group: 'A', value: 10 },
{ id: '002', group: 'B', value: 20 },
{ id: '003', group: 'A', value: 30 },
{ id: '004', group: 'C', value: 40 },
{ id: '005', group: 'B', value: 50 }
]
```
你可以使用Java 8中的Stream API对它们进行分组和求和,然后将结果转换为一个Map对象。
这是一个示例代码:
```java
Map<String, Integer> result = list.stream()
.collect(Collectors.groupingBy(
item -> item.group,
Collectors.summingInt(item -> item.value)
));
```
在上面的代码中,我们首先使用`groupingBy`方法按照`group`字段进行分组。然后,我们使用`summingInt`方法对每个分组中的`value`字段进行求和。最后,我们将结果转换为一个Map对象,其中键为分组字段的值,而值为对应分组中所有元素的`value`字段之和。
以上代码将返回以下Map对象:
```
{
"A": 40,
"B": 70,
"C": 40
}
```
它代表了原始列表中每个不同的`group`字段的值以及该组中所有元素的`value`字段之和。
阅读全文