前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【编程】给定一个部门,变量出当前部门的所有父部门包含当前部门

【编程】给定一个部门,变量出当前部门的所有父部门包含当前部门

作者头像
凯哥Java
发布2022-12-16 20:21:54
3750
发布2022-12-16 20:21:54
举报
文章被收录于专栏:凯哥Java

给定一个部门,输出当前部门的所有父部门及其自己。如下图:

ee8f1c9ed3e8f87e341a797be2322f9d.png
ee8f1c9ed3e8f87e341a797be2322f9d.png

分析:

1:如果直接就是一级部门,直接返回;

2:如果不是一级部门,就递归查询。同样需要注意去重

代码:

代码语言:javascript
复制
public class AllParentDepartment {

    public static void main(String[] args) {
        AllParentDepartment allDepartment = new AllParentDepartment();
        List<Department> list = allDepartment.initDepartment();
        Department d1 = new Department();
        d1.setParentId(7);
        d1.setId(10);
        d1.setName("高级Java");
        List<Department> myParentList = allDepartment.getMyAllParentDepartmentList(d1, list);
        myParentList.forEach(System.out::println);
    }

    private List<Department> getMyAllParentDepartmentList(Department d1, List<Department> list) {
        List<Department> result = new ArrayList<>();
        Integer parentId = d1.getParentId();
        result.add(d1);
        if (0 == parentId) {
            return result;
        }
        doMyAllParentDepartmentList(d1, list, result);
        return result;
    }

    private void doMyAllParentDepartmentList(Department d1, List<Department> list, List<Department> result) {
        Integer parentId = d1.getParentId();
        if (0 == parentId && !result.contains(d1)) {
            result.add(d1);
            return;
        }
        List<Department> parent0 = list.stream().filter(dep -> dep.getId().equals(parentId)).collect(Collectors.toList());
        if (parent0.isEmpty()) {
            return;
        }
        Department department = parent0.get(0);
        result.add(department);
        doMyAllParentDepartmentList(department, list, result);

    }


    private List<Department> initDepartment() {
        List<Department> list = new ArrayList<>();
        Department d1 = new Department();
        d1.setParentId(0);
        d1.setId(1);
        d1.setName("技术部");

        Department d2 = new Department();
        d2.setParentId(0);
        d2.setId(2);
        d2.setName("人事部");


        Department d3 = new Department();
        d3.setParentId(0);
        d3.setId(3);
        d3.setName("财务部");

        Department d4 = new Department();
        d4.setParentId(1);
        d4.setId(4);
        d4.setName("大前端");

        Department d5 = new Department();
        d5.setParentId(1);
        d5.setId(5);
        d5.setName("后端");


        Department d6 = new Department();
        d6.setParentId(1);
        d6.setId(6);
        d6.setName("产品");


        Department d7 = new Department();
        d7.setParentId(5);
        d7.setId(7);
        d7.setName("Java");

        Department d8 = new Department();
        d8.setParentId(5);
        d8.setId(8);
        d8.setName("PHP");

        Department d9 = new Department();
        d9.setParentId(5);
        d9.setId(9);
        d9.setName("大数据");

        Department d10 = new Department();
        d10.setParentId(7);
        d10.setId(10);
        d10.setName("高级Java");

        Department d11 = new Department();
        d11.setParentId(9);
        d11.setId(11);
        d11.setName("大屏幕");

        Department d12 = new Department();
        d12.setParentId(4);
        d12.setId(12);
        d12.setName("IOS");

        Department d13 = new Department();
        d13.setParentId(2);
        d13.setId(13);
        d13.setName("HRBP");

        list.add(d1);
        list.add(d2);
        list.add(d3);
        list.add(d4);
        list.add(d5);
        list.add(d6);
        list.add(d7);
        list.add(d8);
        list.add(d9);
        list.add(d10);
        list.add(d11);
        list.add(d12);
        list.add(d13);
        return list;
    }
}


@Data
class Department {
    private Integer parentId;

    private Integer id;

    private String name;

}

运行结果:

7d9be6ba5ef2c49104a3c546fd6f9470.png
7d9be6ba5ef2c49104a3c546fd6f9470.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档