java递归菜单加redis,递归查询单表菜单树形结构(多级树形结构)

/**

* 递归查询树形结构==================================================

*/

@PostMapping("/recursive")

@ResponseBody

public List> findWorld() {

List> allList = new ArrayList<>(); //接收所有的信息

List> parentMapList = new ArrayList<>(); //接收获取的父节点

List> retList = new ArrayList<>(); //接收获取的父节点

try {

allList = myTestService.findWorld(); //获取所有的信息

for (int i = 0; i < allList.size(); i++) { //循环所有信息找出所有的根节点(p_id=-1)

if ("-1".equals(allList.get(i).get("p_id").toString())) {

parentMapList.add(allList.get(i)); //将找出来的根节点重新存到一个List集合中

allList.remove(i); //从所有的数据中移除根节点

i--; //每移除一个根节点就将所有数据的个数减一

}

}

retList = recursive(allList,parentMapList); //调用此方法寻找子节点

} catch (Exception e) {

e.printStackTrace();

}

return retList;

}

/**

* @param parentMapList 所有父节点

* @param allList 所有数据

* @return

*/

public List> recursive(List> allList,List> parentMapList) {

//循环根节点

for(int j = 0;j

List> tempList = new ArrayList<>(); //用来存取子节点

//循环全部节点,判断节点中P_id是否与根节点中的id相同

for(int k = 0;k

if(allList.get(k).get("p_id").toString().equals(parentMapList.get(j).get("id").toString())){

tempList.add(allList.get(k));

}

}

if(tempList.size()>0){

parentMapList.get(j).put("children",tempList);

recursive(allList,tempList); //此次循环又将tempList作为parentMapList(父节点去找其他的子节点),直到没有子节点在执行j+1

}

}

return parentMapList;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值