该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
树节点遍历工具类:
@UtilityClass 2 public class TreeUtil { 3 /** 4 * 两层循环实现建树 5 * 6 * @param treeNodes 传入的树节点列表 7 * @return 8 */ 9 public List bulid(List treeNodes, Object root) {10 11 List trees = new ArrayList<>();12 13 for (T treeNode : treeNodes) {14 15 if (root.equals(treeNode.getParentId())) {16 trees.add(treeNode);17 }18 19 for (T it : treeNodes) {20 if (it.getParentId() == treeNode.getId()) {21 if (treeNode.getChildren() == null) {22 treeNode.setChildren(new ArrayList<>());23 }24 treeNode.add(it);25 }26 }27 }28 return trees;29 }30 31 /**32 * 使用递归方法建树33 *34 * @param treeNodes35 * @return36 */37 public List buildByRecursive(List treeNodes, Object root) {38 List trees = new ArrayList();39 for (T treeNode : treeNodes) {40 if (root.equals(treeNode.getParentId())) {41 trees.add(findChildren(treeNode, treeNodes));42 }43 }44 return trees;45 }46 47 /**48 * 递归查找子节点49 *50 * @param treeNodes51 * @return52 */53 public T findChildren(T treeNode, List treeNodes) {54 for (T it : treeNodes) {55 if (treeNode.getId() == it.getParentId()) {56 if (treeNode.getChildren() == null) {57 treeNode.setChildren(new ArrayList<>());58 }59 treeNode.add(findChildren(it, treeNodes));60 }61 }62 return treeNode;63 }64 }