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回答
-
可以的,这位同学基础挺好的,也善于思考,点赞,加油!
10
相似问题