不需要递归将数据格式化 easyui combotree 何各种tree的格式

比如我们要得到[{id:1,name:'test1',

                                                        son:[{id:2,name:'test2',son[]}, id:3,name:'test3',son:[] ]}]

这样格式的数据,我们数据库是个菜单表,一般是用递归算法一层层去解析。

我的方案是 

                    写一个菜单的pojo ------- AdminMenu  这个pojo里面有一个son的List<AdminMenu  > 属性。

  
                                    // 这里注意,这个list中 父菜单一定要在子菜单前面
    private String findMenuTreeJosn(List<AdminMenu> menuList)
    {
        // 用于根据id查找对应父节点
        Map<Integer, AdminMenu>  menuItemMap = new LinkedHashMap<>();
        AdminMenu fatherItem = null;
        // 遍历所有菜单,找到他们的父菜单对象,并且把自己挂到他的父菜单的son中
        for (AdminMenu menu : menuList)
        {
            fatherItem = menuItemMap.get(menu.getFatherMenuId());
            menuItemMap.put(menu.getMenuId(), menu);
            // 如果找不到父部门 返回
            if (fatherItem == null)
            {
                continue;
            }
            fatherItem.getSonMenu().add(menu);
        }
        Set<Integer> menuKeySet = menuItemMap.keySet();
        AdminMenu tempMenuItem = null;
        menuList = new ArrayList<>();
        // 便利所有的菜单,找到一级菜单,将一级菜单对象添加到集合中,这个一级菜单下面的所有子菜单和孙子菜单都已经挂在他下面了,所以我们不管
        for(Integer menuId : menuKeySet)
        {
            tempMenuItem = menuItemMap.get(menuId);
            // fatherid=0 代表为一级菜单
            if(tempMenuItem.getFatherMenuId() == 0)
            {
                menuList.add(tempMenuItem);
            }
        }
        // 将这个list转换为 json对象就ok了
        return JsonUtils.list2json(menuList);
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值