• java 实现递归实现tree


    package app.util;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import com.alibaba.fastjson.JSON;
    
    
    public class Menu {
            private Integer pid;
            private String menuName;
            private Integer parentId;
            private Integer position;
            private List<Menu> childMenu;
    
            
    
     
    
            public Integer getPid() {
                return pid;
            }
    
    
    
            public void setPid(Integer pid) {
                this.pid = pid;
            }
    
    
    
            public String getMenuName() {
                return menuName;
            }
    
    
    
            public void setMenuName(String menuName) {
                this.menuName = menuName;
            }
    
    
    
            public Integer getParentId() {
                return parentId;
            }
    
    
    
            public void setParentId(Integer parentId) {
                this.parentId = parentId;
            }
    
    
    
            public Integer getPosition() {
                return position;
            }
    
    
    
            public void setPosition(Integer position) {
                this.position = position;
            }
    
    
    
            public List<Menu> getChildMenu() {
                return childMenu;
            }
    
    
    
            public void setChildMenu(List<Menu> childMenu) {
                this.childMenu = childMenu;
            }
    
    
    
            public Menu(Integer parentId,String menuName, Integer pid, Integer position) {
                super();
                this.parentId = parentId;
                this.menuName = menuName;
                this.pid = pid;
                this.position = position;
            }
    
     
    
            public Menu() {
                super();
            }
    
     
    
    
            public static void main(String[] args) {
                
                List<Menu> list=new ArrayList<Menu>();
                Menu menu1=new Menu(1, "父级1", 0, 1);
                Menu menu2=new Menu(2, "父级2", 0, 2);
                Menu menu1_1=new Menu(3, "子级1_1", 1, 1);
                Menu menu1_2=new Menu(4, "子级1_2", 1, 2);
                Menu menu1_2_1=new Menu(5, "子级1_2_1", 4, 2);
                Menu menu1_2_2=new Menu(6, "子级1_2_2", 2, 2);
                list.add(menu1);
                list.add(menu2);
                list.add(menu1_1);
                list.add(menu1_2);
                list.add(menu1_2_1);
                list.add(menu1_2_2);
                
                List<Menu> listTree=buildTree(list,0);
                
                String trssJson=JSON.toJSONString(listTree);
                System.out.println(trssJson);
            
            }
            
            public static List<Menu> buildTree(List<Menu> list,int pid){
                List<Menu> menus=new ArrayList<Menu>();
                for (Menu menu : list) { 
                
                    int parentId = menu.getPid();
                    int  menuId= menu.getParentId();
                    if (pid == parentId) { 
                    List<Menu> menuLists = buildTree(list, menuId); 
                    
                    menu.setChildMenu(menuLists);
                    menus.add(menu); 
                } 
            } 
            
            return menus;
            }
    }

    成型

    [
        {
            "childMenu": [
                {
                    "childMenu": [
                        
                    ],
                    "menuName": "子级1_1",
                    "parentId": 3,
                    "pid": 1,
                    "position": 1
                },
                {
                    "childMenu": [
                        {
                            "childMenu": [
                                
                            ],
                            "menuName": "子级1_2_1",
                            "parentId": 5,
                            "pid": 4,
                            "position": 2
                        }
                    ],
                    "menuName": "子级1_2",
                    "parentId": 4,
                    "pid": 1,
                    "position": 2
                }
            ],
            "menuName": "父级1",
            "parentId": 1,
            "pid": 0,
            "position": 1
        },
        {
            "childMenu": [
                {
                    "childMenu": [
                        
                    ],
                    "menuName": "子级1_2_2",
                    "parentId": 6,
                    "pid": 2,
                    "position": 2
                }
            ],
            "menuName": "父级2",
            "parentId": 2,
            "pid": 0,
            "position": 2
        }
    ]
  • 相关阅读:
    HDU3910(数学期望题,题目难懂)
    HDU2389(二分图匹配Hopcroft-Carp算法)
    二分图详解
    巴什博弈、威佐夫博弈、尼姆博弈
    HDU2819(二分图匹配,记录过程)
    查找外键未创建索引
    acl使用示例
    oracle数据库备份任务
    集中备份相关
    集中备份项目实施方案
  • 原文地址:https://www.cnblogs.com/-flq/p/10208165.html
Copyright © 2020-2023  润新知