list转树形结构 java
时间: 2023-10-10 11:13:19 浏览: 96
AlaiJSCtr.rar_树形结构 java
假设有一个`List<Node>`,其中每个节点都有一个`id`和`parentId`,表示节点的父子关系。可以通过以下代码将其转换为树形结构:
```java
public static Node buildTree(List<Node> nodes) {
Map<Integer, Node> map = new HashMap<>();
Node root = null;
// 将所有节点放入map中
for (Node node : nodes) {
map.put(node.getId(), node);
}
// 遍历节点,将子节点加入对应的父节点中
for (Node node : nodes) {
int parentId = node.getParentId();
if (parentId == 0) {
root = node; // 根节点
} else {
Node parent = map.get(parentId);
parent.addChild(node);
}
}
return root;
}
```
其中`Node`类可以定义如下:
```java
public class Node {
private int id;
private int parentId;
private List<Node> children = new ArrayList<>();
public Node(int id, int parentId) {
this.id = id;
this.parentId = parentId;
}
public int getId() {
return id;
}
public int getParentId() {
return parentId;
}
public List<Node> getChildren() {
return children;
}
public void addChild(Node child) {
children.add(child);
}
}
```
使用方法:
```java
List<Node> nodes = new ArrayList<>();
nodes.add(new Node(1, 0));
nodes.add(new Node(2, 1));
nodes.add(new Node(3, 1));
nodes.add(new Node(4, 2));
nodes.add(new Node(5, 2));
nodes.add(new Node(6, 3));
Node root = buildTree(nodes);
```
通过以上代码,可以将节点列表转换为树形结构,并返回根节点。
阅读全文