springboot树形结构代码
时间: 2023-07-01 20:21:15 浏览: 80
以下是使用Spring Boot实现树形结构的示例代码:
首先,我们需要定义一个树形节点的实体类,可以包含节点ID、父节点ID、节点名称等属性:
```java
public class TreeNode {
private Long id;
private Long parentId;
private String name;
private List<TreeNode> children;
// getter and setter methods
}
```
接下来,我们需要编写一个服务类来处理树形结构的相关操作,例如获取树形结构、添加节点、删除节点等:
```java
@Service
public class TreeService {
private List<TreeNode> nodes; // 存储所有节点的列表
public TreeService() {
nodes = new ArrayList<>();
// 初始化节点列表,这里可以从数据库或其他数据源中加载节点数据
nodes.add(new TreeNode(1L, null, "Root"));
nodes.add(new TreeNode(2L, 1L, "Node 1"));
nodes.add(new TreeNode(3L, 1L, "Node 2"));
nodes.add(new TreeNode(4L, 2L, "Node 1.1"));
nodes.add(new TreeNode(5L, 2L, "Node 1.2"));
nodes.add(new TreeNode(6L, 4L, "Node 1.1.1"));
// ...
}
// 获取树形结构
public List<TreeNode> getTree() {
List<TreeNode> roots = new ArrayList<>();
for (TreeNode node : nodes) {
if (node.getParentId() == null) {
roots.add(node);
}
}
for (TreeNode root : roots) {
root.setChildren(getChildren(root.getId()));
}
return roots;
}
// 获取指定节点的子节点
private List<TreeNode> getChildren(Long parentId) {
List<TreeNode> children = new ArrayList<>();
for (TreeNode node : nodes) {
if (node.getParentId() != null && node.getParentId().equals(parentId)) {
children.add(node);
}
}
for (TreeNode child : children) {
child.setChildren(getChildren(child.getId()));
}
return children;
}
// 添加节点
public void addNode(TreeNode node) {
nodes.add(node);
}
// 删除节点及其子节点
public void deleteNode(Long nodeId) {
Iterator<TreeNode> iter = nodes.iterator();
while (iter.hasNext()) {
TreeNode node = iter.next();
if (node.getId().equals(nodeId)) {
iter.remove();
} else if (node.getParentId() != null && node.getParentId().equals(nodeId)) {
iter.remove();
}
}
}
}
```
最后,我们可以在控制器中调用服务类来实现相关操作:
```java
@RestController
@RequestMapping("/tree")
public class TreeController {
@Autowired
private TreeService treeService;
// 获取树形结构
@GetMapping("/get")
public List<TreeNode> getTree() {
return treeService.getTree();
}
// 添加节点
@PostMapping("/add")
public void addNode(@RequestBody TreeNode node) {
treeService.addNode(node);
}
// 删除节点
@DeleteMapping("/delete/{id}")
public void deleteNode(@PathVariable Long id) {
treeService.deleteNode(id);
}
}
```
以上示例代码仅供参考,具体实现方式可以根据实际需求进行调整。
阅读全文