Java递归生成树

x33g5p2x  于2022-07-10 转载在 Java  
字(0.7k)|赞(0)|评价(0)|浏览(574)

1.建菜单表

  1. CREATE TABLE `t_menu` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `pid` int(11) NOT NULL,
  4. `name` varchar(255) DEFAULT NULL,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;

2.造一些数据

注意:根节点的pid=0,其他节点的pid跟id是有对应的父子关系的。

3.撸代码

这里只展示递归生成树的代码,查询数据库的操作非常简单,只用到了一句sql,然后将结果封装成List。

  1. select id, pid, `name` from t_menu

service代码:

  1. @Override
  2. public List<Menu> tree() {
  3. // 查询出所有的菜单数据集合
  4. List<Menu> menus = menuMapper.selectAll();
  5. // 生成菜单树
  6. return createTree(0, menus);
  7. }
  8. /**
  9. * 递归生成菜单树
  10. */
  11. private List<Menu> createTree(int pid, List<Menu> menus) {
  12. List<Menu> treeMenu = new ArrayList<>();
  13. for (Menu menu : menus) {
  14. if (pid == menu.getPid()) {
  15. treeMenu.add(menu);
  16. menu.setChildren(createTree(menu.getId(), menus));
  17. }
  18. }
  19. return treeMenu;
  20. }

返回数据格式如下:

相关文章

最新文章

更多