登录后复制 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)); 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16. 2.以上new了三个对象,有两个编号是一样的。接下来可以对编号进行分组然后求出来金额的总和。 登录后复制 Map<String, BigDecimal> listMap = list.stream().collect( Collectors.groupingBy( PurchasePlanDetailsBudgetPO::getBudgetNo, Collectors.reducing(BigDecimal.ZERO, PurchasePlanDetailsBudgetPO::getSelectionAmount, BigDecimal::add))); 1.2.3.4. 以上就是分组求和,比较简单,完全可以通过java8中的stream来实现 原创作者: u_16173082 转载于: https://blog.51cto.com/u_16173082/11435485