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

来源:互联网 发布:java linklist 编辑:程序博客网 时间:2024/05/29 15:54

比如我们要得到[{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);    }


0 0