123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package com.yaozhitech.spring5.common.util;
- import java.util.ArrayList;
- import java.util.List;
- import com.yaozhitech.spring5.common.vo.TreeNode;
- /**
- * Created by Ace on 2017/6/12.
- */
- public class TreeUtil{
- /**
- * 两层循环实现建树
- *
- * @param treeNodes 传入的树节点列表
- * @return
- */
- public static <T extends TreeNode> List<T> bulid(List<T> treeNodes,Object root) {
- List<T> trees = new ArrayList<T>();
- for (T treeNode : treeNodes) {
- if (root.equals(treeNode.getParentId())) {
- trees.add(treeNode);
- }
- for (T it : treeNodes) {
- if (it.getParentId() == treeNode.getId()) {
- if (treeNode.getChildren() == null) {
- treeNode.setChildren(new ArrayList<TreeNode>());
- }
- treeNode.add(it);
- }
- }
- }
- return trees;
- }
- /**
- * 使用递归方法建树
- *
- * @param treeNodes
- * @return
- */
- public static <T extends TreeNode> List<T> buildByRecursive(List<T> treeNodes,Object root) {
- List<T> trees = new ArrayList<T>();
- for (T treeNode : treeNodes) {
- if (root.equals(treeNode.getParentId())) {
- trees.add(findChildren(treeNode, treeNodes));
- }
- }
- return trees;
- }
- /**
- * 递归查找子节点
- *
- * @param treeNodes
- * @return
- */
- public static <T extends TreeNode> T findChildren(T treeNode, List<T> treeNodes) {
- for (T it : treeNodes) {
- if (treeNode.getId() == it.getParentId()) {
- if (treeNode.getChildren() == null) {
- treeNode.setChildren(new ArrayList<TreeNode>());
- }
- treeNode.add(findChildren(it, treeNodes));
- }
- }
- return treeNode;
- }
- }
|