我是靠谱客的博主 淡定唇膏,最近开发中收集的这篇文章主要介绍利用递归将MySQL查询出的数据转为树形结构(list),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、pojo类

//树形节点id
private String cId;
//树形节点名称
private String cName;
//标签创建人
private String cCreator;
//团队id
private String cTeamId;
//标签颜色
private Byte nColour;
//是否是父级标签
private Byte nLabelType;
//父级id
private String cPid;
//是否删除
private Byte nDelete;
//标签管理子集
rivate List<TCaseLabel> childLabel =new ArrayList();

//set/get省略……
//有参和无参构造省略……
//toString方法省略……

二、封装工具类

     /**
     * 使用递归方法建树
     * @param menuTrees  子节点集合
     * @return List<MenuTree>
     */
    public static List<TCaseLabel> buildByRecursive(List<TCaseLabel> labelTrees) {
        List<TCaseLabel> trees = new ArrayList<>();
        for (TCaseLabel labelTree : labelTrees) {
         //菜单级别为0,则是一级数据(本次结构最多只有两级,所以直接获取根目录)
            if ("0".equals(labelTree.getcPid())) {
                trees.add(findChildren(labelTree,labelTrees));
            }
            /*菜单级别为0,则是一级数据,根据实际情况判断可修改相关关联判断
            if ("0".equals(menuTree.getLevel())) {
                trees.add(findChildren(menuTree,menuTrees));
            }*/
        }
        return trees;
    }

    /**
     * 递归查找子节点
     * @param menuTree  菜单数对象
     * @param menuTrees  子节点
     * @return MenuTree
     */
    private static TCaseLabel findChildren(TCaseLabel labelTree,List<TCaseLabel> labelTrees) {
        for (TCaseLabel it : labelTrees) {
            if(labelTree.getcId().equals(it.getcPid())) {
                if (labelTree.getChildLabel() == null) {
                 labelTree.setChildLabel(new ArrayList<TCaseLabel>());
                }
                labelTree.getChildLabel().add(findChildren(it,labelTrees));
            }
        }
        return labelTree;
    }

三、调用

List<TCaseLabel> parentList = buildByRecursive(tCaseLabelMapper.queryLabelList(label));

比较简单,嗯~但还是记一下吧♥

最后

以上就是淡定唇膏为你收集整理的利用递归将MySQL查询出的数据转为树形结构(list)的全部内容,希望文章能够帮你解决利用递归将MySQL查询出的数据转为树形结构(list)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部