Java list转成tree

将list的当前层放到前一层的children里,例如list.size=5,0为最顶级,5放入4中,4放入3中.最终得到长度为1的list,children里套四层

  • 建议你看下这篇博客👉 :java List数据封装Tree结构
  • 除此之外, 这篇博客: Java中List转Tree、List转化深林树、Tree转List中的 四、Tree转List 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 需求修改权限,跟前端妹子协商好参数,也是通过树形化传给后台

    实现思路

    1. 获取前端传给的树形列表;
    2. 定义一个空的List用来添加权限列表
    3. 把一级目录权限添加都List集合
    4. 在判断有子孙节点是否有元素
    5. 递归遍历子孙节点添加List集合
    @Override
        public Boolean savePermission(PermissionTreeReq permissionTreeReq) {
    
            log.info("savePermission.req permissionTreeReq={}", JSON.toJSONString(permissionTreeReq));
            List<PermissionTreeResp> permissionRespList = new LinkedList<>();
            List<PermissionTreeResp> permissionTreeList = permissionTreeReq.getPermissionTreeResps();
            // 树转化成List
            treeToList(permissionRespList, permissionTreeList);
            log.info("treeToList={}",JSON.toJSONString(permissionRespList));
            return Boolean.TRUE;
        }
        /**
         * 数转换成List
         * @param permissionRespList
         * @param permissionTreeList
         * @date: 2021/3/9 22:23
         * @return: void
         */
        private void treeToList(List<PermissionTreeResp> permissionRespList, List<PermissionTreeResp> permissionTreeList) {
            
            for (PermissionTreeResp permissionTreeResp : permissionTreeList) {
                permissionRespList.add(permissionTreeResp);
                if (CollectionUtil.isNotEmpty(permissionTreeResp.getChildren())) {
                    treeToList(permissionRespList,permissionTreeResp.getChildren());
                }
            }
        }

     

    感谢大家看到最后,如文章有不足,欢迎大家在评论区支持,给予意见。如果觉得我的文章对你有帮助,那就给我一个赞同吧!

有父子关系么?

代码:

public static void main(String[] args) {
        List<Item> list = Lists.newArrayList(
                new Item(1),
                new Item(2),
                new Item(3),
                new Item(4),
                new Item(5));
        for (int i = 0; i < list.size() - 1; i++) {
            list.get(i).setChild(list.get(i + 1));
        }
        System.out.println(list.get(0));
    }

结果:

Item(id=1, child=Item(id=2, child=Item(id=3, child=Item(id=4, child=Item(id=5, child=null)))))