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

这个Java程序演示了如何递归地从一个菜单列表中获取指定父节点下的所有子节点。通过创建一个名为`Test7`的类,程序首先初始化菜单节点,并使用递归方法`recursiveTree`来构建树形结构。该方法根据菜单ID遍历并收集子节点。最终,使用Gson库将结果转换为JSON字符串进行输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packagecom.demo.web.test;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.Objects;importcom.demo.web.model.Menu;importcom.google.gson.Gson;public classTest7 {private static List

public static voidmain(String[] args) {//List

List

Menu mu=newMenu();

mu.setId(1);

pidList.add(mu);

mu.setName("目录");

mu.setParentid("0");

Menu mu1=newMenu();

mu1.setId(2);

mu1.setName("目录1");

mu1.setParentid("1");

Menu mu2=newMenu();

mu2.setId(3);

mu2.setName("目录2");

mu2.setParentid("1");

Menu mu3=newMenu();

mu3.setId(4);

mu3.setName("目录3");

mu3.setParentid("1");//目录3下子节点

Menu mu4=newMenu();

mu4.setId(5);

mu4.setName("目录4");

mu4.setParentid("4");

treeList.add(mu);

treeList.add(mu1);

treeList.add(mu2);

treeList.add(mu3);

treeList.add(mu4);//pid

System.out.println("pidList:-------------------"+pidList);

List

System.out.println(menu.getId()+" ------- "+menu.getName()+" "+menu.getChildren().get(2).getChildren());

}

System.out.println("7715-=-----------"+tree.get(0).getChildren());

Gson gson= new Gson();//import com.google.gson.Gson;

String result = gson.toJson(tree);//pojo

System.out.println("我看看0---------"+result);

}public static List

if(menu==null) return null;//获取到所有一级节点//List

List

list.add(recursiveTree(parentList.get(i).getId()));

}

}returnlist;

}/*** 递归算法解析成树形结构

*@paramcid*/

public staticMenu recursiveTree(Integer cid) {

Menu node=getMenuById(cid);

List

Menu n=recursiveTree(child.getId());

List

list.add(n);

System.out.println(node.getChildren());if (node.getChildren()==null) {

List

node.setChildren(li);

}//node.setChildren(list);

node.getChildren().add(n);

}returnnode;

}/*** 根据CID查询节点对象*/

public staticMenu getMenuById(Integer cid){

Map map=getTreeMap();return(Menu) map.get(cid);

}/*** 一次性取所有数据,为了减少对数据库查询操作

*@return

*/

public staticMap getTreeMap(){

Map map= new HashMap();if(null !=treeList){for(Menu d : treeList){

map.put(d.getId(), d);

}

}returnmap;

}/*** 根据父节点CID获取所有了节点*/

public static List

List

list.add(d);

}

}

}

}returnlist;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值