1.假设我们有一个list对象。对象里边存放着预算编号、预算金额。
PurchasePlanDetailsBudgetPO purchasePlanDetailsBudgetPO = new PurchasePlanDetailsBudgetPO();
purchasePlanDetailsBudgetPO.setBudgetNo("0000001");
purchasePlanDetailsBudgetPO.setSelectionAmount(new BigDecimal(100));
list.add(purchasePlanDetailsBudgetPO);
PurchasePlanDetailsBudgetPO purchasePlanDetailsBudgetPO1 = new PurchasePlanDetailsBudgetPO();
purchasePlanDetailsBudgetPO1.setBudgetNo("0000001");
purchasePlanDetailsBudgetPO1.setSelectionAmount(new BigDecimal(100));
list.add(purchasePlanDetailsBudgetPO1);
PurchasePlanDetailsBudgetPO purchasePlanDetailsBudgetPO2 = new PurchasePlanDetailsBudgetPO();
purchasePlanDetailsBudgetPO2.setBudgetNo("0000002");
purchasePlanDetailsBudgetPO2.setSelectionAmount(new BigDecimal(100));
2.以上new了三个对象,有两个编号是一样的。接下来可以对编号进行分组然后求出来金额的总和。
Map<String, BigDecimal> listMap = list.stream().collect(
Collectors.groupingBy(
PurchasePlanDetailsBudgetPO::getBudgetNo,
Collectors.reducing(BigDecimal.ZERO, PurchasePlanDetailsBudgetPO::getSelectionAmount, BigDecimal::add)));
以上就是分组求和,比较简单,完全可以通过java8中的stream来实现