loadTree()?

来源:12-2 资源配置管理

慕神4535282

2020-09-09

老师,你好!请教一个问题,请看下面代码中的倒数第6行,

+    /**
+     * 按约定将列表转成树
+     * 要求:ID要正序排列
+     * @return
+     */
+    public List<ResourceDto> loadTree() {
+        ResourceExample example = new ResourceExample();
+        example.setOrderByClause("id asc");
+        List<Resource> resourceList = resourceMapper.selectByExample(example);
+        List<ResourceDto> resourceDtoList = CopyUtil.copyList(resourceList, ResourceDto.class);
+        for (int i = resourceDtoList.size() - 1; i >= 0; i--) {
+            // 当前要移动的记录
+            ResourceDto child = resourceDtoList.get(i);
+
+            // 如果当前节点没有父节点,则不用往下了
+            if (StringUtils.isEmpty(child.getParent())) {
+                continue;
+            }
+            // 查找父节点
+            for (int j = i - 1; j >= 0; j--) {
+                ResourceDto parent = resourceDtoList.get(j);
+                if (child.getParent().equals(parent.getId())) {
+                    if (CollectionUtils.isEmpty(parent.getChildren())) {
+                        parent.setChildren(new ArrayList<>());
+                    }
+                    // 添加到最前面,否则会变成倒序,因为循环是从后往前循环的
+                    parent.getChildren().add(0, child);
+
+                    // 子节点找到父节点后,删除列表中的子节点
+                    resourceDtoList.remove(child);
+ 
+                    // 老师,你好,请看这一行,个人觉得,在此可以 break; 想听听你的看法?
+                }
+            }
+        }
+        return resourceDtoList;
+    }

谢谢解答!

写回答

1回答

甲蛙

2020-09-10

可以的,这位同学基础挺好的,也善于思考,点赞,加油!

1
0

Spring Cloud+ Vue前后端分离开发企业级在线视频系统

全网稀缺课程 市场热门项目+主流框架 一课掌握前后端技术

1743 学习 · 1697 问题

查看课程

相似问题

loadTree()

回答 1

loadTree()?

回答 1