java id pid 递归,父子结构数据(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 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合集相关推荐
- Java递归查询某个节点下所有子节点多级信息(递归部门查询,递归树形结构数据查询)
前言 在做项目中我们会遇到树形结构数据,如果我们想要查询某个几点下面所有子节点(多级)数据,此时我们又不知道下面有多少级节点以及节点ID,那么我们就需要使用递归去查询了,当然在数据库中写函数也是可以实 ...
- java学习-ztree设置某个字段为父id字段
var setting = {data: {simpleData: {enable: true,idKey: "id",pIdKey: "pId",rootPI ...
- java.lang.SecurityException: Permission Denial: startForeground from pid=29734, uid=10484 requires
高德地图定位报错: java.lang.RuntimeException: Unable to create service com.itcast.mobilesafe07.service.Prote ...
- 递归查找所有子代id php,PHP递归函数:从父ID获取子ID
我正在尝试使用以下代码从数组的父ID中获取所有孩子 $temp = array(); $temp[] = array("id"=>"2", "p ...
- 根据ID或者ID集合查找树形结构数据里面ID所对应的节点信息
方法一 // 方法一function aa(id, arr) {for (var i in arr) {if (arr[i] == id) {return true}}}function getCit ...
- 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 ...
- java 末级递归树_如何递归获取json里末级章节名称
漂流的河 发布于 2016/01/26 10:56 阅读 326 收藏 0 这是我获取到的一个大JSON,里面有7个大章节,现在我要获取每个大章节里的末级章节名称,如何获取?递归吗? [{ " ...
- Java技术积累递归调用——解析树的基本实现原理
在做项目的过程中,经常会用到树结构.关于树结构的框架我也接触过几个,比如easyui中封装的树,Ztree等.当然这些封装好的框架只需要我们去按照API来使用即可,那么树的实现原理究竟是怎样的.今天用 ...
- SQL Server 2005新特性之使用with关键字解决递归父子关系
1. 引言 现实项目中经常遇到需要处理递归父子关系的问题,如果把层次关系分开,放在多个表里通过主外键关系联接,最明显的问题就是扩展起来不方便,对于这种情况,一般我们会创建一个使用自连接的表来存放数据. ...
- 传递一个父id返回所有子id的用法,可用于删除父级以下的所有子级
先在common文件夹建立一个function.php文件,然后写一个递归函数,传递一个父id返回所有子id,如下: function getChildrenId($node,$pid){$arr=a ...
最新文章
- 邮件发送打印机更改打印机连接的通知
- 成功解决No handles with labels found to put in legend.
- Hadoop配置文件
- Exception in thread main org.apache.thrift.transport.TTransportException: Could not create ServerS
- 小程序 微信红包封面后台独立版 带测评积分功能源码
- spring核心包功能解析
- String与StringBuilder区别总结
- 计算机电子书 2016 BiliDrive 备份
- 图像分割(多分类)将mask变为one hot label
- java英文姓名随机生成_java随机生成中国人姓名
- 已解决谷歌浏览器打不开axure原型
- 如何将TS格式的视频转换成mp4格式
- 在Ubuntu中安装中文输入法
- win7系统设置cmd窗口默认以管理员权限运行
- 项目(百万并发网络通信架构)10.3---send()函数的极限测试
- 台式计算机硬盘英寸,台式电脑硬盘和笔记本电脑硬盘有区别吗?台式机硬盘报价一般是多少?...
- linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)
- Rosenfeld细化算法 matlab(速度超慢)
- ESXi修改网卡名称
- MTK tpd驱动框架