java 递归操作

Java 递归 代码实现

多层分级处理

 1     public List<TreeTest> treeList() {
 2         List<TreeTest> result = new ArrayList<>();
 3         // 获取全部数据
 4         List<TreeTest> list = sysMenuMapper.queryTreeList();
 5         // 遍历list,获取父节点为空的数据
 6         for (TreeTest tree : list) {
 7             // 获取最顶层的一列数据
 8             if (tree.getPid() == null) {
 9                 result.add(tree);
10             }
11         }
12         // 递归设置子节点信息
13         for (TreeTest tree1 : result) {
14             setChildren(tree1, list);
15         }
16         return result;
17     }
18     private void setChildren(TreeTest tree1, List<TreeTest> list) {
19         // 获取sysMenu节点的所有子节点
20         Set<TreeTest> children = getChildren(list, tree1.getId());
21         // 设置children节点信息
22         tree1.setChildren(children);
23         // 遍历list,将该节点的父节点添加到children集合中
24         for (TreeTest tree3 : list) {
25             if (tree1.getId() != null && tree1.getId() == tree3.getPid()) {
26                 // 循环调用符合条件的 setChildren ,不断往后叠加,递归调用
27                 setChildren(tree3, list);
28                 children.add(tree3);
29             }
30         }
31     }
32     // 根据节点id获取节点的所有子节点集合
33     private Set<TreeTest> getChildren(List<TreeTest> list, int id) {
34         // 空的子节点集合children
35         Set<TreeTest> children = new HashSet<TreeTest>();
36         for (TreeTest tree2 : list) {
37             // 如果temp的pid不为空,且等于id,添加到children(下一层的pid等于上一层的id)
38             if (tree2.getPid() != null && tree2.getPid() == id) {
39                 children.add(tree2);
40             }
41         }
42         return children;
43     }
TreeService

 

posted @ 2019-06-14 16:35  不迷茫时代  阅读(283)  评论(0)    收藏  举报