帮我用Java写一个用于生成树形结构数据的工具类
时间: 2023-04-01 11:00:55 浏览: 115
JAVA排序树形结构数据构建,这个工具类就够了
好的,我可以回答这个问题。以下是一个简单的 Java 工具类,用于生成树形结构数据:
```
import java.util.ArrayList;
import java.util.List;
public class TreeUtils {
public static List<Node> buildTree(List<Node> nodes) {
List<Node> roots = new ArrayList<>();
for (Node node : nodes) {
if (node.getParentId() == null) {
roots.add(node);
} else {
for (Node parent : nodes) {
if (parent.getId().equals(node.getParentId())) {
parent.addChild(node);
break;
}
}
}
}
return roots;
}
public static class Node {
private String id;
private String parentId;
private String name;
private List<Node> children = new ArrayList<>();
public Node(String id, String parentId, String name) {
this.id = id;
this.parentId = parentId;
this.name = name;
}
public String getId() {
return id;
}
public String getParentId() {
return parentId;
}
public String getName() {
return name;
}
public List<Node> getChildren() {
return children;
}
public void addChild(Node child) {
children.add(child);
}
}
}
```
这个工具类包含一个 `Node` 类,用于表示树形结构中的一个节点,以及一个 `buildTree` 方法,用于将节点列表转换为树形结构。使用方法如下:
```
List<TreeUtils.Node> nodes = new ArrayList<>();
nodes.add(new TreeUtils.Node("1", null, "Root"));
nodes.add(new TreeUtils.Node("2", "1", "Child 1"));
nodes.add(new TreeUtils.Node("3", "1", "Child 2"));
nodes.add(new TreeUtils.Node("4", "2", "Grandchild 1"));
nodes.add(new TreeUtils.Node("5", "2", "Grandchild 2"));
List<TreeUtils.Node> roots = TreeUtils.buildTree(nodes);
```
这将生成一个树形结构,其中根节点为 `Root`,它有两个子节点 `Child 1` 和 `Child 2`,`Child 1` 又有两个子节点 `Grandchild 1` 和 `Grandchild 2`。
阅读全文