Java stream分组求和
时间: 2023-09-05 16:09:33 浏览: 102
可以使用Java 8中的流(Stream)对数据进行分组求和操作。下面是一个示例代码:
假设有一个包含若干订单信息的列表,每个订单信息包含商品名称和数量两个字段,现在需要对商品名称进行分组,然后计算每个商品名称对应的总数量。
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Order> orders = Arrays.asList(
new Order("apple", 2),
new Order("banana", 3),
new Order("apple", 1),
new Order("orange", 4),
new Order("banana", 2),
new Order("orange", 1)
);
Map<String, Integer> result = orders.stream()
.collect(Collectors.groupingBy(Order::getName, Collectors.summingInt(Order::getQuantity)));
System.out.println(result);
}
}
class Order {
private String name;
private int quantity;
public Order(String name, int quantity) {
this.name = name;
this.quantity = quantity;
}
public String getName() {
return name;
}
public int getQuantity() {
return quantity;
}
}
```
输出结果为:
```
{orange=5, banana=5, apple=3}
```
其中,`groupingBy`方法根据商品名称对订单信息进行分组,`summingInt`方法计算每个分组中订单数量的总和。最终得到一个Map对象,其中键为商品名称,值为对应的总数量。
阅读全文