java 有一个树结构部门List和普通结构的员工List,统计每个部门员工的数量,同时把数量汇总到父级
时间: 2024-02-26 07:56:26 浏览: 24
好的,针对你的问题,我可以给你一些思路和代码实现的建议。
首先,我们可以定义一个树形结构的部门类,其中包含部门名称、员工列表、部门负责人、子部门列表等属性和方法。示例代码如下:
```java
public class Department {
private String name;
private List<Employee> employees;
private Department manager;
private List<Department> subDepartments;
// 构造方法、Getter和Setter方法等省略
}
```
接着,我们可以定义一个普通结构的员工类,其中包含员工姓名、所属部门、薪水等属性和方法。示例代码如下:
```java
public class Employee {
private String name;
private Department department;
private double salary;
// 构造方法、Getter和Setter方法等省略
}
```
然后,我们可以编写一个方法,用于统计每个部门员工的数量,并把数量汇总到父级。具体思路如下:
1. 遍历所有部门,对于每个部门,递归遍历所有子部门并调用该方法,统计子部门员工数量并汇总到当前部门。
2. 遍历当前部门的所有员工,并将员工数量加到当前部门的员工数量中。
3. 如果当前部门有上级部门,将当前部门的员工数量汇总到上级部门。
示例代码如下:
```java
public void countEmployees() {
for (Department subDepartment : subDepartments) {
subDepartment.countEmployees();
employees.addAll(subDepartment.getEmployees());
}
int count = employees.size();
for (Employee employee : employees) {
count += employee.getSubordinates();
}
setEmployeeCount(count);
if (manager != null) {
manager.addSubordinates(count);
}
}
```
其中,`getEmployees()` 方法用于获取当前部门的所有员工,`getSubordinates()` 方法用于获取当前员工的下属数量,`setEmployeeCount()` 方法用于设置当前部门的员工数量,`addSubordinates()` 方法用于将员工数量汇总到上级部门。
希望这些代码能够对你有所帮助,如果还有其他问题或需求,欢迎随时提出。