【编程】给定一个部门,遍历出当前部门下所有子部门包含当前部门
给定一个部门,打印出当前部门及其子部门:思路分析:1:可能当前部门没有子部门,如果这种情况,直接返回当前部门;2:如果当前部门包含了子部门,就需要使用递归一层一层的查找;3:在递归的时候,因为是一层一层的,所以,可能在第二层的时候,已经添加了。在进行第三成的时候,可能为空了。需要去重。如下图:完整代码:public class AllDepartment {
给定一个部门,打印出当前部门及其子部门:

思路分析:
1:可能当前部门没有子部门,如果这种情况,直接返回当前部门;
2:如果当前部门包含了子部门,就需要使用递归一层一层的查找;
3:在递归的时候,因为是一层一层的,所以,可能在第二层的时候,已经添加了。在进行第三成的时候,可能为空了。需要去重。如下图:

完整代码:
public class AllDepartment {
public static void main(String[] args) {
AllDepartment allDepartment = new AllDepartment();
List<Department> list = allDepartment.initDepartment();
Department d1 = new Department();
d1.setParentId(0);
d1.setId(1);
d1.setName("技术部");
List<Department> myList = allDepartment.getMyAllDepartmentList(d1, list);
myList.forEach(System.out::println);
}
private List<Department> getMyAllDepartmentList(Department d1, List<Department> list) {
List<Department> result = new ArrayList<>();
Integer myId = d1.getId();
List<Department> mySonDepartment = list.stream().filter(d -> d.getParentId().equals(myId)).collect(Collectors.toList());
result.add(d1);
if (mySonDepartment.isEmpty()) {
return result;
}
getSon(list, d1, result);
return result;
}
private void getSon(List<Department> list原创不易,完成人机校验,阅读全文