将数据转成tree型结构
时间: 2024-03-14 13:46:50 浏览: 24
将数据转换成树形结构通常需要两个步骤:
1. 将数据进行处理,将节点之间的父子关系确定下来;
2. 根据处理好的数据,构建出树形结构。
以下是一个示例,将一个包含id和parentId的数据列表转换为树形结构:
```java
public class TreeNode {
private int id; // 节点id
private List<TreeNode> children; // 子节点列表
public TreeNode(int id) {
this.id = id;
this.children = new ArrayList<>();
}
// 添加子节点
public void addChild(TreeNode node) {
children.add(node);
}
// 构建树形结构
public static TreeNode buildTree(List<TreeNode> nodeList) {
Map<Integer, TreeNode> nodeMap = new HashMap<>();
// 将所有节点放入map中
for (TreeNode node : nodeList) {
nodeMap.put(node.id, node);
}
// 构建树形结构
TreeNode root = null;
for (TreeNode node : nodeList) {
if (node.parentId == null) {
// 根节点
root = node;
} else {
// 非根节点
TreeNode parent = nodeMap.get(node.parentId);
parent.addChild(node);
}
}
return root;
}
}
// 示例数据
List<TreeNode> nodeList = new ArrayList<>();
nodeList.add(new TreeNode(1, null));
nodeList.add(new TreeNode(2, 1));
nodeList.add(new TreeNode(3, 1));
nodeList.add(new TreeNode(4, 2));
nodeList.add(new TreeNode(5, 2));
// 构建树形结构
TreeNode root = TreeNode.buildTree(nodeList);
```
以上代码通过将节点列表中的节点放入map中,再根据父子关系构建出树形结构。其中,节点类TreeNode包含id和parentId两个属性,以及一个子节点列表children。buildTree方法接收一个节点列表nodeList,返回根节点root。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)