Java 动态树的实现
Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.
目录
概述
树形菜单非常常见的需求。
需求:
设计思路
树形菜单我们常见的一种需求。
实现思路分析
1. 简单Java实现:
Java 动态树的实现思路如下:
- 定义树节点类:首先需要定义一个树节点类,包含节点值和子节点列表。
java
class TreeNode {
int value;
List<TreeNode> children;
}
- 实现动态添加子节点的方法:通过给树节点类添加一个方法,可以动态地添加子节点。
java
class TreeNode {
int value;
List<TreeNode> children;
void addChild(TreeNode child) {
if (children == null) {
children = new ArrayList<>();
}
children.add(child);
}
}
- 实现动态删除子节点的方法:同样给树节点类添加一个方法,可以动态地删除子节点。
java
class TreeNode {
int value;
List<TreeNode> children;
void removeChild(TreeNode child) {
if (children != null) {
children.remove(child);
}
}
}
- 实现遍历树节点的方法:可以使用递归或者栈来实现树的遍历。以下是一个递归的示例:
java
class TreeNode {
int value;
List<TreeNode> children;
void traverse() {
System.out.println(value);
if (children != null) {
for (TreeNode child : children) {
child.traverse();
}
}
}
}
- 创建根节点和添加子节点:使用上述定义的树节点类,可以创建根节点并添加子节点。
java
public class Main {
public static void main(String[] args) {
TreeNode root = new TreeNode();
root.value = 1;
TreeNode child1 = new TreeNode();
child1.value = 2;
root.addChild(child1);
TreeNode child2 = new TreeNode();
child2.value = 3;
root.addChild(child2);
root.traverse();
}
}
2.建立父子表存储
1.建立一张父子关系表
2.遍历父子节点
3.返回节点控制
3.前端的对应的json 字符串方式
这种方式就是前段整理好对应的json格式的树形结构,后端存储的时候
保存这个json 串。
添加的时候增加到对应的一个字段中,这个字段存储的是json 字符。
当前台界面变化时,数据的组织形式发生改变,
当没有的时候,字段为空,不矛盾。
提供增加和修改的方法,
当修改的时候,
一种思路是:
先查出对应的json 串,把json 看成一个bean 实体,然后解析封装成一个实体,设置对应的bean 实体,更改变化的树节点,然后保存
另一种思路是:
当删除时,前端重新组包,格式化更新到数据库中。
即可
参考资料和推荐阅读
参考资料
官方文档
开源社区
博客文章
书籍推荐
欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~