springboot动态生成树形多结构
时间: 2023-11-15 17:50:39 浏览: 108
可以使用递归方法来动态生成树形多结构。以下是一个示例代码:
```
public class TreeNode {
private String id;
private String parentId;
private String name;
private List<TreeNode> children;
// getters and setters
}
public class TreeHelper {
public static List<TreeNode> buildTree(List<TreeNode> nodes) {
List<TreeNode> tree = new ArrayList<>();
Map<String, TreeNode> nodeMap = new HashMap<>();
// 将所有节点放入一个Map中,方便查找父节点
for (TreeNode node : nodes) {
nodeMap.put(node.getId(), node);
}
// 遍历所有节点,找到根节点并加入树中
for (TreeNode node : nodes) {
if (node.getParentId() == null) {
tree.add(buildSubTree(node, nodeMap));
}
}
return tree;
}
private static TreeNode buildSubTree(TreeNode node, Map<String, TreeNode> nodeMap) {
TreeNode treeNode = new TreeNode();
treeNode.setId(node.getId());
treeNode.setName(node.getName());
// 递归查找子节点并加入树中
List<TreeNode> children = new ArrayList<>();
for (TreeNode child : nodeMap.values()) {
if (child.getParentId() != null && child.getParentId().equals(node.getId())) {
children.add(buildSubTree(child, nodeMap));
}
}
treeNode.setChildren(children);
return treeNode;
}
}
```
使用方法:
```
List<TreeNode> nodes = new ArrayList<>();
// 添加节点到nodes中
List<TreeNode> tree = TreeHelper.buildTree(nodes);
// 使用tree
```
其中,`TreeNode`类表示树节点,包含节点ID、父节点ID、节点名称和子节点列表;`TreeHelper`类提供了一个静态方法`buildTree`,接收一个节点列表,返回一个树形结构。在方法中,首先将所有节点放入一个Map中,然后遍历所有节点,找到根节点并将其加入树中,接着递归查找子节点并加入树中。最后返回整棵树。
阅读全文