zoukankan      html  css  js  c++  java
  • 父子结构数据(id,pid)递归查询所有子id合集和父id合集

    查询子id合集

    创建实体类

    @Data
    public class Department {
      private int id; private int pid; private String name; public Department(int id, int pid, String name) { this.id = id; this.pid = pid; this.name = name; }

    方法

     //递归查询子部门---lists所有部门合集,set为id合集,
        private static Set<Integer> intset = new HashSet<>();
        private static void getChiildrenDepartment(List<Department> lists, Set<Integer> set) {
    Set<Integer> set1 = new HashSet<>();
    for (Department depart : lists) {
    for (Integer i : set) {
    if (i.equals(new Integer(depart.getPid()))) {
    set1.add(depart.getId());
    intset.add(depart.getId());
    getChiildrenDepartment(lists, set1);
    }
    }
    }
    }
    //递归查询父部门---lists所有部门合集,set为id合集,topId为顶层id private static void getParentDepartmnet(List<Department> lists, Set<Integer> set, int topId){ Set<Integer> set1 = new HashSet<>(); for (Department depart : lists) { for (Integer i : set) { if (i.equals(new Integer(depart.getId()))) { set1.add(depart.getPid()); intset.add(depart.getPid()); } if( depart.getPid() == topId){ continue; }else { getParentDepartmnet(lists, set1, topId); } } } }

     测试

    public static void main(String[] args) {
    
            Department d1 = new Department(1, 0, "总部");
            Department d2 = new Department(2, 1, "分部2");
            Department d3 = new Department(3, 1, "分部3");
            Department d4 = new Department(4, 1, "分部4");
            Department d5 = new Department(5, 2, "分部2子部1");
            Department d6 = new Department(6, 2, "分部2子部2");
            Department d7 = new Department(7, 3, "分部3子部1");
            List<Department> list = new ArrayList<>();
            list.add(d1);
            list.add(d2);
            list.add(d3);
            list.add(d4);
            list.add(d5);
            list.add(d6);
            list.add(d7);
            Set<Integer> set = new HashSet<>();
            set.add(7);
            getChiildrenDepartment(list, set);
            System.out.println(intset);
            intset.addAll(set);
            System.out.println(intset);
            intset.clear();
            getParentDepartmnet(list, set,0);
            System.out.println(intset);
            intset.addAll(set);
            System.out.println(intset);
        }
    
  • 相关阅读:
    python爬虫(十六) -IndexError: list index out of range
    python爬虫(十五) 豆瓣电影爬虫
    python爬虫(十四)
    python爬虫(十三) lxml模块
    python爬虫(十二) XPath语法
    python爬虫(十一) session
    python爬虫(十) requests使用代理ip
    python爬虫(九) requests库之post请求
    python爬虫(八) requests库之 get请求
    PXE+kickstart网络安装CentOS7.4系统及过程中各种报错
  • 原文地址:https://www.cnblogs.com/hmpcly/p/10857779.html
Copyright © 2011-2022 走看看