java在网站制作实现多级菜单方法

来源:网络日期:2026-03-25 浏览:0

java实现多级菜单的方法
在网站开发的时候我们会对网站的栏目进行分类,一个栏目可以有多个子分类,一个子分类又可以有分裂
1,查询菜单树:

public List<Map<String, Object>> queryCategoryInfo() {
List<Map<String, Object>> allMenu=queryAllCategory();
     //根节点
     List<Map<String, Object>> rootMenu=new ArrayList<Map<String, Object>>();
     for (Map<String, Object> nav : allMenu) {
    String parentId=String.valueOf(nav.get("parent_id"));
       if(parentId.equals("0")){//父节点是0的,为根节点。
         rootMenu.add(nav);
       }
     }
     
//      Collections.sort(rootMenu, order());
     //为根菜单设置子菜单,getClild是递归调用的
     for (Map<String, Object> nav : rootMenu) {
       
    String id=String.valueOf(nav.get("category_id"));
       List<Map<String, Object>> childList=getChild(id, allMenu);
//        nav.setChildren(childList);//给根节点设置子节点
       nav.put("child", childList);
     }


return rootMenu;
}

  



private List<Map<String, Object>> getChild(String id,List<Map<String, Object>> allMenu){
   //子菜单
List<Map<String, Object>> childList=new ArrayList<Map<String, Object>>();
for (Map<String, Object> nav : allMenu) {
// 遍历所有节点,将所有菜单的父id与传过来的根节点的id比较
//相等说明:为该根节点的子节点。
String parentId=String.valueOf(nav.get("parent_id"));
if(id.equals(parentId)){
childList.add(nav);
}
}
//递归
for (Map<String, Object> nav : childList) {
String tempId=String.valueOf(nav.get("category_id"));
//nav.setChildren(,getChild(tempId, allMenu));
nav.put("child", getChild(tempId, allMenu));
}
//Collections.sort(childList,order());//排序
//如果节点下没有子节点,返回一个空List(递归退出)
   if(childList.size()==0){
     return new ArrayList<Map<String, Object>>();
   }
   return childList;
}

  


2,Java 集合 之 List 多级菜单;

package com.menu;
 
import java.util.List;
 
public class TestCategory
{
public static String level="";

内江网站建设 public static void main(String[] args)
{
MenuManager mm=new MenuManager();
mm.add(new Menu(0,-1,"主控管理系统"));
mm.add(new Menu(100,0,"主控管理"));
mm.add(new Menu(101,0,"公共信息"));
mm.add(new Menu(102,0,"本单位管理"));
mm.add(new Menu(103,0,"下属管理"));
mm.add(new Menu(104,0,"部门管理"));
mm.add(new Menu(105,0,"职位管理"));
mm.add(new Menu(10000,104,"部门类别"));
泸州网页设计 mm.add(new Menu(10001,104,"部门信息"));

List<Menu> menuList=mm.getMenuList();
for(int i=0;i<menuList.size();i++)
{
Menu menu=menuList.get(i);
if(menu.getPid()==-1)
{
System.out.println(menu.getName());
showMenu(menu,menuList);
break;
}
}

}

广元网页设计 public static void showMenu(Menu parentMenu,List<Menu> menuList)
{
level+="----";
for(int i=0;i<menuList.size();i++)
{
Menu menu=menuList.get(i);
if(menu.getPid()==parentMenu.getId())
{
System.out.println(level+menu.getName());
showMenu(menu,menuList);
}
}
level=level.德阳网站建设substring(0,level.length()-4);
}
}
 
 
 
 
 
package com.menu;
 
public class Menu
{
private int id;
private int pid;
private String name;

public Menu(int id, int pid, String name)
{
super();
this.id=id;
this.pid=pid;
this.name=name;
}
public int getId()
{
return id;
}
public void setId(int id)
{
this.id=id;
}
public int getPid()
{
return pid;
}
public void setPid(int pid)
{
this.pid=pid;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name=name;
}


}
 
 
 
 
 
package com.menu;
 
import java.util.ArrayList;
import java.util.List;
 
public class MenuManager
{
private List<Menu> menuList=new ArrayList<Menu>();

public void add(Menu menu)
{
menuList.add(menu);
}
 
public List<Menu> getMenuList()
{
return menuList;
}
 
public void setMenuList(List<Menu> menuList)
{
this.menuList=menuList;
}


}




TAG标签耗时:0.0084021091461182 秒
首页
电话
短信
联系