Java递归获取zTree两种树形结构数据

1、数据结构

id 主键

pId 关联Id

name 节点名称

level 节点级别

2、标准数据类型

标准的 JSON 数据需要嵌套表示节点的父子包含关系

    数据结构:
    var nodes = [
        {name: "父节点1", children: [
            {name: "子节点1"},
            {name: "子节点2"}
        ]}
    ];
    
    // 获取标准JSON数据
    public static List<Map<String, Object>> getStandardJSON() {
        // 根据不同框架获取对应的List数据
        List<Map<String, Object>> queryList = query.find();
        List<Map<String, Object>> parentList = Lists.newArrayList();
        for (Map<String, Object> map : queryList) {
            if (map.get("pId").equals("0")) {
                parentList.add(map);
            }
        }    
        recursionChildren(parentList, queryList);
        return parentList;
    }
    
    // 递归获取子节点数据
    public static void recursionChildren (List<Map<String, Object>> parentList, 
List<Map<String, Object>> allList) {
        for (Map<String, Object> parentMap : parentList) {
            List<Map<String, Object>> childrenList = Lists.newArrayList();
            for (Map<String, Object> allMap : allList) {
                if (allMap.get("pId").equals(parentMap.get("id"))) {
                    childrenList.add(allMap);
                }
            }
            if (!ParamValidUtils.isEmpty(childrenList)) {
                parentMap.put("children", childrenList);
                recursionChildren(childrenList, allList);
            }
        }
    }

3、简单数据类型

简单模式的 JSON 数据需要使用 id / pId 表示节点的父子包含关系

    数据结构:
    var nodes = [
        {id:1, pId:0, name: "父节点1"},
        {id:11, pId:1, name: "子节点1"},
        {id:12, pId:1, name: "子节点2"}
    ];

    // 获取简单JSON数据
    public static List<Map<String, Object>> getSimpleJSON() {
        // 根据不同框架获取对应的List数据
        List<Map<String, Object>> queryList = query.find();
        List<Map<String, Object>> parentList = Lists.newArrayList();
		for (Map<String, Object> map : queryList) {
            if (map.get("pId").equals("0")) {
                parentList.add(map);
            }
        }
        List<Map<String, Object>> returnList = Lists.newArrayList();
        for (Map<String, Object> parentMap : parentList) {
            recursionChildren(parentMap, queryList, returnList);
        }    
        return returnList;
    }
    
    // 递归获取子节点
    public static void recursionChildren(Map<String, Object> parentMap, 
List<Map<String, Object>> allList, List<Map<String, Object>> returnList) {
        returnList.add(parentMap);
        for (Map<String, Object> allMap : allList) {
            if (allMap.get("pId").equals(parentMap.get("id"))) {
                returnList.add(allMap);
                test(allMap, allList, returnList);
            }
        }
    }

4、优化

Java递归获取zTree标准结构数据优化

Java递归获取zTree简单结构数据优化

 

 

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值