用递归获取多级菜单

本文讲述了在项目中遇到的多级菜单构建问题,从早期的手动循环处理到后来的递归方法实现,旨在解决菜单深度可变带来的代码复杂性。通过递归将获取的菜单列表转化为多叉树结构,简化了代码并提高了可维护性。同时提到了非递归遍历的两种方式,提供了相关资源链接。
摘要由CSDN通过智能技术生成

获取多级菜单这件事情几乎在每个项目中都会遇到。以前的项目因为菜单只有两级并且不会添加深度,为了方便就直接手写两层循环把事情解决了。

后来维护的时候就觉得代码非常的啰嗦,而且因为循环里的东西太多,也不敢全部打开来修改,生怕把这堆本来就乱七八糟的程序彻底玩坏。

今年经历了一个项目,里面的多级菜单可以让用户自己添加深度,于是以前的代码就不适用了,虽然为了赶工硬着头皮写了五层循环把可能达到的深度问题给掩盖掉了,后来打开来看的时候自己也觉得不舒服,一来太长,重复的地方太多,而且虽然不可能,但是遇到用户误操作把深度加的更深的话连修改都做不到,因为显示不出来,于是决定趁着这几天东西比较少把这个历史遗留问题彻底解决。

其实思路很简单,把获取到的列表按照每个节点递归下去,逐渐把整个多叉树构建出来,但是具体的条件让我纠结了很久,也是暴露了基础能力的问题。


import java.util.List;

// 源数据
public class SourceDataPackage {
    public int status;
    public int reCount;
    public String Message;
    public List
   
   
    
     data;
}import java.util.List;

public class NodeTree {
    public int id;
    public String name;
    public int OwnerId;
    public List
    
    
     
      children;
}public class Menu {

    public NodeTree ge
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值