查询子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 intset = new HashSet<>();

private static void getChiildrenDepartment(List lists, Set set) {

Set 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 lists, Set set, int topId){

Set 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 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 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);

}

java id pid 递归,父子结构数据(id,pid)递归查询所有子id合集和父id合集相关推荐

  1. Java递归查询某个节点下所有子节点多级信息(递归部门查询,递归树形结构数据查询)

    前言 在做项目中我们会遇到树形结构数据,如果我们想要查询某个几点下面所有子节点(多级)数据,此时我们又不知道下面有多少级节点以及节点ID,那么我们就需要使用递归去查询了,当然在数据库中写函数也是可以实 ...

  2. java学习-ztree设置某个字段为父id字段

    var setting = {data: {simpleData: {enable: true,idKey: "id",pIdKey: "pId",rootPI ...

  3. java.lang.SecurityException: Permission Denial: startForeground from pid=29734, uid=10484 requires

    高德地图定位报错: java.lang.RuntimeException: Unable to create service com.itcast.mobilesafe07.service.Prote ...

  4. 递归查找所有子代id php,PHP递归函数:从父ID获取子ID

    我正在尝试使用以下代码从数组的父ID中获取所有孩子 $temp = array(); $temp[] = array("id"=>"2", "p ...

  5. 根据ID或者ID集合查找树形结构数据里面ID所对应的节点信息

    方法一 // 方法一function aa(id, arr) {for (var i in arr) {if (arr[i] == id) {return true}}}function getCit ...

  6. zabbix服务器没有.pid文件,PID file /run/zabbix/zabbix_server.pid not readable (yet?) after start. 报错解决...

    报错如下: [root@localhost zabbix]# systemctl start zabbix-server Job for zabbix-server.service failed be ...

  7. java 末级递归树_如何递归获取json里末级章节名称

    漂流的河 发布于 2016/01/26 10:56 阅读 326 收藏 0 这是我获取到的一个大JSON,里面有7个大章节,现在我要获取每个大章节里的末级章节名称,如何获取?递归吗? [{ " ...

  8. Java技术积累递归调用——解析树的基本实现原理

    在做项目的过程中,经常会用到树结构.关于树结构的框架我也接触过几个,比如easyui中封装的树,Ztree等.当然这些封装好的框架只需要我们去按照API来使用即可,那么树的实现原理究竟是怎样的.今天用 ...

  9. SQL Server 2005新特性之使用with关键字解决递归父子关系

    1. 引言 现实项目中经常遇到需要处理递归父子关系的问题,如果把层次关系分开,放在多个表里通过主外键关系联接,最明显的问题就是扩展起来不方便,对于这种情况,一般我们会创建一个使用自连接的表来存放数据. ...

  10. 传递一个父id返回所有子id的用法,可用于删除父级以下的所有子级

    先在common文件夹建立一个function.php文件,然后写一个递归函数,传递一个父id返回所有子id,如下: function getChildrenId($node,$pid){$arr=a ...

最新文章

  1. 邮件发送打印机更改打印机连接的通知
  2. 成功解决No handles with labels found to put in legend.
  3. Hadoop配置文件
  4. Exception in thread main org.apache.thrift.transport.TTransportException: Could not create ServerS
  5. 小程序 微信红包封面后台独立版 带测评积分功能源码
  6. spring核心包功能解析
  7. String与StringBuilder区别总结
  8. 计算机电子书 2016 BiliDrive 备份
  9. 图像分割(多分类)将mask变为one hot label
  10. java英文姓名随机生成_java随机生成中国人姓名
  11. 已解决谷歌浏览器打不开axure原型
  12. 如何将TS格式的视频转换成mp4格式
  13. 在Ubuntu中安装中文输入法
  14. win7系统设置cmd窗口默认以管理员权限运行
  15. 项目(百万并发网络通信架构)10.3---send()函数的极限测试
  16. 台式计算机硬盘英寸,台式电脑硬盘和笔记本电脑硬盘有区别吗?台式机硬盘报价一般是多少?...
  17. linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)
  18. Rosenfeld细化算法 matlab(速度超慢)
  19. ESXi修改网卡名称
  20. MTK tpd驱动框架

热门文章

  1. 在Excel中激活数据分析工具
  2. 常微分方程I ODE的例子3 生态学模型:Malthus增长模型、Lotka-Volterra模型
  3. VSCode绿豆沙主题,爱护你的眼睛,丢掉深色背景
  4. ARM 是什么,ARM的意思,ARM介绍
  5. HAL定时器库函数和定时器的解析
  6. 没事干的时候可以看这些,超全超多…
  7. 战地5离线bot模式_战地2怎么增加bot
  8. RS-485位移传感器集线器的功能大家了解吗?
  9. 你在找mp3音频格式转换器有哪些吗?分享3个实用的软件
  10. HaaS EDU K1 快速搭建Python开发环境