一个员工的集合, 先按照员工工号分组,在根据员工工资求和,使用stream流程
时间: 2024-10-28 19:10:57 浏览: 17
yuangongguanli.zip_java 员工_java 考勤_员工考勤_工资_考勤 工资
在Java中,如果你有一个包含员工信息(如工号和工资)的集合,比如`List<Employee>`,并且你想按照工号分组,然后对每个工号内的工资求和,可以使用Stream API。以下是一个简单的步骤:
首先,假设`Employee`类有一个名为`employeeNo`(工号)和`salary`(工资)的属性:
```java
class Employee {
private String employeeNo;
private double salary;
// getters and setters...
}
```
1. 获取员工集合的Stream:
```java
List<Employee> employees = ... // 初始化员工列表
Stream<Employee> employeeStream = employees.stream();
```
2. 使用`Collectors.groupingBy()`方法按工号分组:
```java
Map<String, Double> result = employeeStream
.collect(Collectors.groupingBy(Employee::getEmployeeNo, Collectors.reducing(0.0, Employee::getSalary, Double::sum)));
```
这里,`Collectors.reducing(0.0, Employee::getSalary, Double::sum)`表示对于每个工号,初始值设为0,然后累加每个员工的工资,`Double::sum`就是累加操作。
3. 结果是一个Map,键是工号,值是该工号所有员工的工资总和:
```java
for (Map.Entry<String, Double> entry : result.entrySet()) {
System.out.println("工号:" + entry.getKey() + ", 工资总和:" + entry.getValue());
}
阅读全文