小编Vim*_*mal的帖子

通过添加类的两个BigDecimal类型属性进行分组

我想要同一类的两个BigDecimal类型属性的总和,并将它们与该类的某些其他属性分组。

我尝试使用Collectors.groupingBy()和Collectors.reducing()方法,但这仅适用于可以汇总的一个属性。

Employee类具有以下属性:

class Employee{
 private String name;
 private BigDecimal salary;
 private BigDecimal bonus;
 private String department;

 // Getters and Setters
 }

employeeList.stream().collect(Collectors.groupingBy(
                              Employee::getDepartment, Collectors.reducing(
                                        BigDecimal.ZERO, 
                    (id, emp) -> id.add(emp.getSalary().add(emp.getBonus)), 
                                         BigDecimal::add)));
Run Code Online (Sandbox Code Playgroud)

根据代码的最后一部分,Collectors.reducing(),我希望将薪金和奖金的总和与各个部门一起分组。例如,

部门A-

员工1-工资1000,奖金100

员工2-薪金2000,奖金100

部门B-

员工3-薪金5000,奖金100

现在我想要一张像下面的地图:

[部门A,3200],[部门B,5100]

java java-8 java-stream

4
推荐指数
1
解决办法
79
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1