Java查询菜单树实现指南

1. 概述

在Java开发过程中,查询菜单树是一项常见的任务。本文将指导刚入行的小白如何实现Java查询菜单树的功能。我们将按照以下步骤进行,以确保任务的顺利完成:

步骤 描述
步骤1 创建菜单实体类
步骤2 构建菜单数据结构
步骤3 查询菜单树
步骤4 展示菜单树

2. 创建菜单实体类

首先,我们需要创建一个菜单的实体类,该实体类将用于存储菜单的相关信息。菜单实体类应包含菜单的唯一标识符、菜单的名称、菜单的父节点标识符等属性。

public class Menu {
    private String id;
    private String name;
    private String parentId;

    // 构造方法、getter和setter等省略
}

3. 构建菜单数据结构

接下来,我们需要构建菜单的数据结构。通常情况下,我们可以使用一个列表(List)来存储所有的菜单数据。我们可以通过将菜单对象添加到列表中,并使用菜单的父节点标识符来建立菜单之间的层次关系。

List<Menu> menuList = new ArrayList<>();

Menu menu1 = new Menu("1", "菜单1", null);
Menu menu2 = new Menu("2", "菜单2", null);
Menu menu3 = new Menu("3", "子菜单1", "1");
Menu menu4 = new Menu("4", "子菜单2", "1");
Menu menu5 = new Menu("5", "子菜单3", "2");

menuList.add(menu1);
menuList.add(menu2);
menuList.add(menu3);
menuList.add(menu4);
menuList.add(menu5);

4. 查询菜单树

现在我们已经准备好菜单数据,接下来我们需要实现查询菜单树的功能。在查询菜单树之前,我们需要定义一个递归方法,该方法将根据菜单的父节点标识符进行递归查询。

public List<Menu> getMenuTree(String parentId, List<Menu> menuList) {
    List<Menu> treeList = new ArrayList<>();
    
    for (Menu menu : menuList) {
        if (menu.getParentId() == parentId) {
            List<Menu> children = getMenuTree(menu.getId(), menuList);
            menu.setChildren(children);
            treeList.add(menu);
        }
    }
    
    return treeList;
}

5. 展示菜单树

最后,我们需要展示查询到的菜单树。我们可以通过遍历菜单树的方式,将菜单名称以树形结构输出到控制台或者展示在前端页面上。

public void showMenuTree(List<Menu> menuTree, int level) {
    for (Menu menu : menuTree) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < level; i++) {
            sb.append("--");
        }
        sb.append(menu.getName());
        System.out.println(sb.toString());
        
        if (menu.getChildren() != null) {
            showMenuTree(menu.getChildren(), level + 1);
        }
    }
}

6. 完整代码示例

public class Menu {
    private String id;
    private String name;
    private String parentId;
    private List<Menu> children;

    // 构造方法、getter和setter等省略
}

public class MenuTreeDemo {
    public static void main(String[] args) {
        List<Menu> menuList = new ArrayList<>();

        Menu menu1 = new Menu("1", "菜单1", null);
        Menu menu2 = new Menu("2", "菜单2", null);
        Menu menu3 = new Menu("3", "子菜单1", "1");
        Menu menu4 = new Menu("4", "子菜单2", "1");
        Menu menu5 = new Menu("5", "子菜单3", "2");

        menuList.add(menu1);
        menuList.add(menu2);
        menuList.add(menu3);
        menuList.add(menu4);
        menuList.add(menu5);

        MenuTreeDemo demo = new MenuTreeDemo();