Java编写树形结构,结合hutool工具

        //获取数据
        List<SysMenu> menus = menuService.selectMenuList(menu, userId);

        //配置
        TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
        treeNodeConfig.setIdKey("menuId");//这里的值就是数据显示的字段名称,可不配置,默认为"id"
        treeNodeConfig.setParentIdKey("parentId");//这里的值就是数据显示的字段名称,可不配置,默认为"parentId"
        treeNodeConfig.setNameKey("menuName");//这里的值就是数据显示的字段名称,可不配置,默认为  "name"
        treeNodeConfig.setWeightKey("orderNum");//这里的值就是数据显示的字段名称,可不配置,默认为"weight"
        treeNodeConfig.setChildrenKey("children");//这里的值就是数据显示的字段名称,可不配置,默认为"children"
        // 最大递归深度
        //treeNodeConfig.setDeep(2);//可不用配置,默认无限制
        List<Tree<String>> treeNodes = TreeUtil.build(menus, "0",treeNodeConfig,
                (treeNode, tree) -> {
                    tree.setId(treeNode.getMenuId().toString());//主ID
                    tree.setParentId(treeNode.getParentId().toString());//父ID
                    tree.setWeight(treeNode.getOrderNum());//排序
                    tree.setName(treeNode.getMenuName());//名称
                    // 扩展属性 ...
                    tree.putExtra("path", treeNode.getPath());//添加显示字段,及其名称
                    tree.putExtra("menuType", treeNode.getMenuType());//添加显示字段,及其名称
                    });
        System.out.println(JSONUtil.toJsonStr(treeNodes));

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个可以将Java List转换为树形结构工具类: ``` import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ListToTreeUtil { /** * 将List转换为树形结构 * @param list 原始数据列表 * @param idFieldName 数据项中表示ID的字段名称 * @param parentIdFieldName 数据项中表示父ID的字段名称 * @param childrenFieldName 数据项中表示子数据项的字段名称 * @return 树形结构数据列表 */ public static List<Map<String, Object>> listToTree(List<Map<String, Object>> list, String idFieldName, String parentIdFieldName, String childrenFieldName) { List<Map<String, Object>> treeList = new ArrayList<>(); Map<Object, Map<String, Object>> idMap = new HashMap<>(); // 将所有数据项存入idMap中 for (Map<String, Object> item : list) { Object id = item.get(idFieldName); idMap.put(id, item); } // 遍历所有数据项,将其添加到其父节点下 for (Map<String, Object> item : list) { Object parentId = item.get(parentIdFieldName); if (parentId == null) { // 没有父节点,将其添加到根节点下 treeList.add(item); } else { // 有父节点,将其添加到父节点下 Map<String, Object> parentItem = idMap.get(parentId); List<Map<String, Object>> children = (List<Map<String, Object>>) parentItem.get(childrenFieldName); if (children == null) { children = new ArrayList<>(); parentItem.put(childrenFieldName, children); } children.add(item); } } return treeList; } } ``` 使用方法: ``` List<Map<String, Object>> list = new ArrayList<>(); // 添加数据项到list中 List<Map<String, Object>> treeList = ListToTreeUtil.listToTree(list, "id", "parentId", "children"); // treeList即为转换后的树形结构数据列表 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值