package com.guodi.api.util;
import com.guodi.api.model.ClusterRole;
import lombok.experimental.UtilityClass;
import javax.swing.tree.TreeNode;
import java.util.ArrayList;
import java.util.List;
@UtilityClass
public class TreeUtil {
/**
* 两层循环实现建树
*
* @param treeNodes 传入的树节点列表
* @return
*/
public List bulid(List treeNodes, Object root) {
List<ClusterRole> trees = new ArrayList<>();
for (ClusterRole treeNode : treeNodes) {
if (root.equals(treeNode.getParentId())) {
trees.add(treeNode);
}
for (ClusterRole it : treeNodes) {
if (it.getParentId() == treeNode.getId()) {
if (treeNode.getChildren() == null) {
treeNode.setChildren(new ArrayList<>());
}
treeNode.add(it);
}
}
}
return trees;
}
/**
* 使用递归方法建树
*
* @param treeNodes
* @return
*/
public <T extends TreeNode> List<ClusterRole> buildByRecursive(List<ClusterRole> treeNodes, Object root) {
List<ClusterRole> trees = new ArrayList<ClusterRole>();
for (ClusterRole treeNode : treeNodes) {
if (root.equals(treeNode.getParentId())) {
trees.add(findChildren(treeNode, treeNodes));
}
}
return trees;
}
/**
* 递归查找子节点
*
* @param treeNodes
* @return
*/
public <T extends TreeNode> ClusterRole findChildren(ClusterRole treeNode, List<ClusterRole> treeNodes) {
for (ClusterRole it : treeNodes) {
if (treeNode.getId() == it.getParentId()) {
if (treeNode.getChildren() == null) {
treeNode.setChildren(new ArrayList<>());
}
treeNode.add(findChildren(it, treeNodes));
}
}
return treeNode;
}
public static void main(String[] args) {
}
}
里面的ClusterRole自己根据自己的实际项目创建实体并且修改