阅读量:2
在Java中,可以使用Stream API中的Collectors.groupingBy
方法对数据流进行分组,然后结合Collectors.summingInt
、Collectors.summingLong
或Collectors.summingDouble
方法来对分组后的数据进行求和操作。
下面是一个示例代码,演示如何对一个包含多个对象的数据流按照某个属性进行分组,并对每个分组进行求和操作:
import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; class Item { String category; int amount; public Item(String category, int amount) { this.category = category; this.amount = amount; } public String getCategory() { return category; } public int getAmount() { return amount; } } public class Main { public static void main(String[] args) { List<Item> items = Arrays.asList( new Item("A", 10), new Item("B", 20), new Item("A", 30), new Item("B", 40), new Item("A", 50) ); // 按照 category 分组,并对每个分组的 amount 求和 Map<String, Integer> sumByCategory = items.stream() .collect(Collectors.groupingBy(Item::getCategory, Collectors.summingInt(Item::getAmount))); System.out.println(sumByCategory); } }
以上代码将输出一个包含不同category的总和的Map:
{A=90, B=60}