实现Java Stream按某个字段分组然后求和

引言

作为一名经验丰富的开发者,我们经常会遇到需要对数据进行分组和求和的需求。在Java中,使用Stream API可以轻松实现这一功能。本文将指导一位刚入行的小白如何利用Java Stream按某个字段分组然后求和。

流程

首先,让我们通过一个表格展示整个操作的流程:

步骤 操作
1 从数据源获取数据
2 使用Stream API进行分组
3 对分组后的数据进行求和

代码实现

第一步:从数据源获取数据
List<Transaction> transactions = Arrays.asList(
    new Transaction("A", 100),
    new Transaction("B", 200),
    new Transaction("A", 150),
    new Transaction("B", 300)
);

在这段代码中,我们创建了一个包含Transaction对象的List作为数据源。每个Transaction对象有两个属性:String类型的name和int类型的amount。

第二步:使用Stream API进行分组
Map<String, Integer> sumByGroup = transactions.stream()
    .collect(Collectors.groupingBy(Transaction::getName, Collectors.summingInt(Transaction::getAmount)));

在这段代码中,我们使用了Stream的groupingBy方法,通过Transaction的name属性进行分组,然后使用summingInt方法对每组的amount属性进行求和。最终得到一个Map,key为name,value为对应组的amount总和。

第三步:对分组后的数据进行求和
sumByGroup.forEach((name, sum) -> {
    System.out.println("Name: " + name + ", Sum: " + sum);
});

这段代码将对分组后的数据进行遍历,并输出每组的name和对应的amount总和。

结论

通过本文的指导,我们学习了如何使用Java Stream按某个字段分组然后求和。Stream API的强大功能使得我们能够高效地处理数据,提高开发效率。希望本文对你有所帮助,如有疑问欢迎留言讨论。