java 孩子节点所有,java递归获取某个父节点下面的所有子节点

一.举个栗子

1.menu实体类

package com.dafy.insureagent.bean;

public class Menu {

private String id;

private String name;

private String pid;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPid() {

return pid;

}

public void setPid(String pid) {

this.pid = pid;

}

@Override

public String toString() {

return "Menu [id=" + id + ", name=" + name + ", pid=" + pid + "]";

}

}

2.测试类

package com.dafy.insureagent.bean;

import java.util.ArrayList;

import java.util.List;

public class MenuRecursion {

//子节点

static ListchildMenu = new ArrayList();

/**

* 获取某个父节点下面的所有子节点

* @param menuList

* @param pid

* @return

*/

public static ListtreeMenuList(ListmenuList, int pid) {

for (Menu mu : menuList) {

//遍历出父id等于参数的id,add进子节点集合

if (Integer.valueOf(mu.getPid()) == pid) {

//递归遍历下一级

treeMenuList(menuList, Integer.valueOf(mu.getId()));

childMenu.add(mu);

}

}

return childMenu;

}

public static void main(String args[]) {

ListmenuList = new ArrayList();

Menu mu = new Menu();

mu.setId("1");

mu.setName("目录");

mu.setPid("0");

Menu mu1 = new Menu();

mu1.setId("2");

mu1.setName("目录1");

mu1.setPid("1");

Menu mu2 = new Menu();

mu2.setId("3");

mu2.setName("目录1.1");

mu2.setPid("2");

Menu mu3 = new Menu();

mu3.setId("4");

mu3.setName("目录1.2");

mu3.setPid("2");

Menu mu4 = new Menu();

mu4.setId("5");

mu4.setName("目录2");

mu4.setPid("1");

Menu mu5 = new Menu();

mu5.setId("6");

mu5.setName("目录2.1");

mu5.setPid("5");

Menu mu6 = new Menu();

mu6.setId("7");

mu6.setName("目录2.2");

mu6.setPid("5");

Menu mu7 = new Menu();

mu7.setId("8");

mu7.setName("目录2.2.1");

mu7.setPid("7");

menuList.add(mu);

menuList.add(mu1);

menuList.add(mu2);

menuList.add(mu3);

menuList.add(mu4);

menuList.add(mu5);

menuList.add(mu6);

menuList.add(mu7);

ListchildList = treeMenuList(menuList, 1);

for (Menu m : childList) {

System.out.println(m.getId() + " " + m.getName());

}

}

}

3.控制台结果(注:本身节点不会获取):

3 目录1.1

4 目录1.2

2 目录1

6 目录2.1

8 目录2.2.1

7 目录2.2

5 目录2

方便博主学习回忆

前面转载 https://blog.csdn.net/u010825931/article/details/79925719

如果想查A车间下面的最底层工位

c42ae602bd5a7991018dddfa353a851c.png

再次遍历childlist是否是别人的父级,如果是,就不是最底层的

ListchildList = treeMenuList(List, pid);

ListoutList = new ArrayList<>();

childList.forEach(data->{

ListmodelList=List.stream().filter(fData->fData.getPid().equals(data.getId())).collect(Collectors.toList());

if(modelList.size()==0){

outList.add(data.getId());

}

});

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值