Java递归生成树
2023-09-14 09:06:15 时间
1.建菜单表
CREATE TABLE `t_menu` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;
2.造一些数据
注意:根节点的pid=0,其他节点的pid跟id是有对应的父子关系的。
3.撸代码
这里只展示递归生成树的代码,查询数据库的操作非常简单,只用到了一句sql,然后将结果封装成List。
select id, pid, `name` from t_menu
service代码:
@Override
public List<Menu> tree() {
// 查询出所有的菜单数据集合
List<Menu> menus = menuMapper.selectAll();
// 生成菜单树
return createTree(0, menus);
}
/**
* 递归生成菜单树
*/
private List<Menu> createTree(int pid, List<Menu> menus) {
List<Menu> treeMenu = new ArrayList<>();
for (Menu menu : menus) {
if (pid == menu.getPid()) {
treeMenu.add(menu);
menu.setChildren(createTree(menu.getId(), menus));
}
}
return treeMenu;
}
返回数据格式如下:
相关文章
- Java菜鸟教程 递归算法与Scanner类「建议收藏」
- Java发送邮件工具类
- java 104规约_IEC104规约,Java开发主站程序
- java 取余和取整_Java取整、取余
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- java session id 生成_Java通过sessionId获取Session「建议收藏」
- java递归和迭代_Java中的迭代与递归
- java 生成xml dom4j_Java生成xml——DOM4J生成
- Java把string转json格式_java实体类转json字符串
- accessor和mutator的区别_java concat方法
- java字符串练习题2、反向输出英文字符串
- 【Java】邮件Demo(SSL加密传输)
- java版计算器详解编程语言
- java使用SHA1加密算法详解编程语言
- java 正则表达式的应用:读取文件,获取其中的电话号码详解编程语言
- Java操作MySQL数据库快速入门(java访问mysql)
- 数据库解锁Java,优雅连接Oracle数据库(java使用oracle)
- Java监控MySQL性能:实现数据库运行优化(java监控mysql)
- 深入浅出Java配置MySQL数据库(java配置mysql)
- 服务器上的文件Java获取Linux服务器文件:简单又高效的操作方法(java获取linux)
- 策略解析Java中Redis过期策略(redisjava过期)
- 处理解决Redis中Java过期数据失效问题(redisjava过期)
- 清理利用Redis强大功能简化Java过期数据清理(redisjava过期)
- Linux系统如何配置Java?(linux下配置java)
- 运行Linux中定时运行Java程序的实用方法(linux定时java)
- Java驾驭MySQL,读写如飞(java读写mysql)
- 使用Java实现MySQL数据恢复操作(java恢复mysql)
- Java实现Linux:跨平台解决方案(java 实现linux)
- Java Redis实例学习与应用(java redis实例)
- Linux下快速配置Java环境变量(linux设置java环境变量)
- Java技术将数据写入Oracle数据库(java写入oracle)
- Oracle搭建Java开发环境的步骤(oracle中java)
- [JAVA]十四种Java开发工具点评