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 }

浙公网安备 33010602011771号