java steam 分组求和
时间: 2025-07-12 10:45:51 浏览: 6
在 Java 8 中,可以使用 `Stream` API 对数据进行分组并求和。这种操作通常涉及将数据按某个属性分组,然后对每组的数据执行聚合操作(如求和)。以下是一个完整的示例,展示了如何使用 `groupingBy` 和 `summingDouble` 来实现这一功能。
假设我们有一个包含商品信息的类 `Product`,其中包含商品类别、价格等字段:
```java
import java.util.*;
import java.util.stream.*;
class Product {
private String category;
private double price;
public Product(String category, double price) {
this.category = category;
this.price = price;
}
public String getCategory() {
return category;
}
public double getPrice() {
return price;
}
}
```
接下来是使用 Java Stream 进行分组和求和的核心代码:
```java
List<Product> products = Arrays.asList(
new Product("Electronics", 100.0),
new Product("Electronics", 200.0),
new Product("Clothing", 50.0),
new Product("Clothing", 75.0)
);
Map<String, Double> sumByCategory = products.stream()
.collect(Collectors.groupingBy(
Product::getCategory,
Collectors.summingDouble(Product::getPrice)
));
System.out.println(sumByCategory);
```
以上代码会输出一个 `Map`,其中键为商品类别,值为该类别下所有商品的价格总和 [^1]。
### 解释
- `groupingBy`:用于根据某个属性(这里是商品类别)对流中的元素进行分组。
- `summingDouble`:用于对每组的元素执行求和操作,返回一个 `Double` 类型的结果。
如果需要对更复杂的数据结构进行处理,还可以结合 `mapping` 或 `reducing` 等方法来实现更复杂的逻辑。
---
阅读全文
相关推荐
















