Java递归将List转为树形结构

2022-07-29 14:19:36

文章目录

前言

由于在做前端动态路由时,需要将后端的数据转为tree便于前端构造Vue Router


一、开发环境

  • JDK11(使用了forEach代替循环)

二、具体使用

1.思路

使用递归来获取子节点,在递归的过程中将已添加到树结构中的数据剔除,减少递归调用的次数

2.实现

代码下载链接:https://download.csdn.net/download/weixin_38500202/13214868

 Menu内部类定义如下

    @Data
    static class Menu {
        private Integer id;

        /**
         * 父节点Id
         */
        private Integer parentId;

        /**
         * 菜单名
         */
        private String menuName;

        List<Menu> children;
    }

 具体的实现方法如下

    public List<Menu> list2Tree(List<Menu> list, Integer pId) {
        List<Menu> tree = new ArrayList<>();
        Iterator<Menu> it = list.iterator();
        while (it.hasNext()) {
            Menu m = it.next();
            if (m.parentId == pId) {
                tree.add(m);
                // 已添加的元素删除掉
                it.remove();
            }
        }
        // 寻找子元素
        tree.forEach(n -> n.children = list2Tree(list, n.id));
        return tree;
    }

二、结果

输出结果如下所示


三、总结

递归yyds!🐂

  • 作者:Coding&amp;Sharing
  • 原文链接:https://blog.csdn.net/weixin_38500202/article/details/110456363
    更新时间:2022-07-29 14:19:36