首页 > 编程语言 >Java 使用递归构建树

Java 使用递归构建树

时间:2023-02-07 08:58:17浏览次数:40  
标签:Java 递归 menuId menu private menu1 构建 nodeList Integer

public class MenuTree1 {
    /**
     * 构建结束的树
     */
    private static List<Menu> menuList ;

/**
 * 构建树
 * @param menuId 树的根节点id  0:代表顶级节点
 * @param nodeList 要构建的数据
 * @return
 */
    public static List<Menu> tree3(Integer menuId, List<MyMenu> nodeList){
        menuList = new ArrayList<Menu>();
        Menu menu1=new Menu();
        menu1.setMenuId(menuId);
        getNode3(menu1,nodeList);
        return menuList;
    }

    /**
     * 使用递归构建树
     * @param menu1
     * @param nodeList
     */
    public static void  getNode3(Menu menu1, List<MyMenu> nodeList){
        Integer menuId =menu1.getMenuId();
        for (MyMenu layer : nodeList) {
            if(menuId.toString().equals(layer.getParentId().toString())){
                Integer menuId1=layer.getMenuId();
                Menu menu=new Menu();
                menu.setMenuId(menuId1);
                menu.setMenuName(layer.getMenuName());
                menu.setParentId(layer.getParentId());
                if (menuId.toString().equals("0")){
                    menuList.add(menu);
                }else {
                    menu1.getChildren().add(menu);
                }
                getNode3(menu,nodeList);
            }
        }

    }
}


@Data
public class MyMenu extends BaseEntity{

    private static final long serialVersionUID = -6525908145032868815L;
@TableId
    private Integer menuId;

    private Integer parentId;

    private String menuName;

    private String icon;

    private Integer type;

    private String url;

    private String permission;

    private Integer sort;
}
@Data
public class Menu {
    private List<Menu> children=new ArrayList<>();
    private Integer parentId;
    private Integer menuId;
    private String menuName;
    private Integer value;
    private String label;

}

 

标签:Java,递归,menuId,menu,private,menu1,构建,nodeList,Integer
From: https://www.cnblogs.com/RedOrange/p/17091617.html

相关文章

  • java8新特性之List处理
    1.集合中获取指定的一个属性值List<String>items=li.stream().map(ScdCostChargeItemEntity::getItem).collect(Collectors.toList()); 2.集合分组Map<String,......
  • Java泛型中<?>和<T>的区别浅析
    https://www.jb51.net/article/270336.htm一、定义1、T代表一种类型可以加在类上,也可以加在方法上1)T加在类上123classSuperClass<A>{    //tod......
  • java8中时间的各种转换(LocalDateTime)
      java8中时间的各种转换(LocalDateTime)1.将LocalDateTime转为自定义的时间格式的字符串publicstaticStringgetDateTimeAsString(LocalDateTimelocalDateTime......
  • 读Java实战(第二版)笔记03_引入和使用流
    1. 流1.1. 以声明性方式处理数据集合1.2. 通过查询语句来表达,而不是临时编写一个实现1.3. 遍历数据集的高级迭代器1.4. 透明地并行处理1.5. 从支持数据处理操......
  • Okhttp 如何构建一个 Get 的 URL
    因项目的需要,构建一个微信请求的URL。URL的配置为:https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=......
  • 通俗易懂的理解java泛型
    泛型是JAVA1.5版本之后引入的一个新特性,它允许在定义类、接口和方法的时候使用类型参数,这些类型参数将在使用时确定。泛型的引入,使得JAVA具有了更好的代码复用性,更好的类......
  • Java中保留两位小数之format
    String.format仅限double类型可用int类型会报错doubled1=6.6666;System.out.println(String.format("%.2f",d1));//设置保留两位小数注意:没有小数位或者小数位不够你......
  • java基础
    JAVA基础注释单行注释////这代表单行注释多行注释/**//*多行注释可以在连续多行编写注释*/文档注释/***//***这是文档注释*/标识符只能以字母、......
  • Debugger data model, Javascript & x64 exception handling
    Debuggerdatamodel,Javascript&x64exceptionhandlingDate Fri01December2017 By Axel"0vercl0k"Souchet Category debugging Tags debugging javasc......
  • Java多线程03——线程安全和线程同步
    1 线程的同步安全1.1线程安全问题设计并发编程的目的是为了使程序获得更高的执行效率,但绝不能出现数据一致性问题。比如多个渠道共同出售电影票,如果没有进行安全控制,就会......