java将数据整合成tree所需要的格式

在项目开发中, 经常会使用到树状结构, 树状结构基本就是有父子关系的, 通过后台的逻辑, 处理成
{id: ‘’, title: ‘’, children: []}
这样放到前台使用树的一些相关js就可以直接展示了, 前台无需在进行复杂的操作. 下面就是java后台的相关代码.

可以直接使用, 如果前台需要的参数不符合, 修改一下即可:

	public Object treeList(String id) {
        List<Map> clazzList = new ArrayList<>();
        // 根据节点查询所有子级数据
        clazzList = service.getTreeList(id);
        Map<String, Map> clazzMap = new HashMap<>();
        // 先把所有数据处理成前台树需要的格式 (title, children……), 存到map里
        for (Map item : clazzList) {
            Map map = (Map) JSON.parse(JSON.toJSONString(item));
            map.put("title", item.get("title"));
            map.put("children", new ArrayList<>());
            clazzMap.put(item.get("id").toString(), map);
        }
        List clazzTree = new ArrayList();
        // 对所有数据进行分组, 看是否为同一级的
        for (Map item : clazzList) {
            // 判断刚map里的key(id)是否与原数据的父id相同, 相同则进入它下级, 不同则单独一级(当前即根节点)
            if (clazzMap.containsKey(item.get("parent_id"))) {
                Map row = clazzMap.get(item.get("id"));//row是Map形式的它自己
                List children = (List)clazzMap.get(item.get("parent_id")).get("children");//获取它父亲的“儿子表”
//                row.put("type", "1");//它的类型是1,证明是儿子
                row.put("id", item.get("id"));
                children.add(row);
            } else {
                // 根节点
                Map row = clazzMap.get(item.get("id"));
//                row.put("type","0");//类型是0,证明是父亲
                row.put("id", item.get("id"));
                clazzTree.add(row);//父亲的集合
            }
        }
        return clazzTree;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值