广告
返回顶部
首页 > 资讯 > 精选 >如何使用Java实现一个简易版的多级菜单功能
  • 398
分享到

如何使用Java实现一个简易版的多级菜单功能

2023-06-26 04:06:16 398人浏览 泡泡鱼
摘要

小编给大家分享一下如何使用Java实现一个简易版的多级菜单功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!正文1,首先是数据库的设计DROP TABL

小编给大家分享一下如何使用Java实现一个简易版的多级菜单功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

正文

1,首先是数据库的设计

DROP TABLE IF EXISTS `t_cateGory`;CREATE TABLE `t_category` (  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '标识目录的唯一id',  `parent_id` int(11) DEFAULT NULL COMMENT '存储父级目录的id,0代表一级目录',  `name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '目录的名称',  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

2.java后端代码

① 对应数据库的实体类

public class Category {    private int id;    private int parentId;    private String name;}

② 返回给前端的实体类  //注意写一个有参的构造方法,方便我们把Category的数据注入进来

public class CategoryTwo extends Category{    private List<CategoryTwo> categorieTwos;     public CategoryTwo(){}     //这个有参构造方法方便我们为属性赋值即把categoy的成员变量的值赋值到自身中    public CategoryTwo(Category category){        super(category.getId(),category.getParentId(),category.getName());    }}

③ 具体实现

//多级目录    public void findCategoryAll(){         //查询出所有的目录数据        List<Category> categorys = categoryMapper.findCategoryAll(null);//这个大家自己完成          //存放所有一级目录        List<CategoryTwo> categoryTows = new ArrayList();         //找出一级目录,即 parentId = 0 的目录        for(Category category :categorys){            if(category.getParentId() == 0){                CategoryTwo categoryTwo = new CategoryTwo(category);                categoryTows.add(categoryTwo);//存入一级目录集合中            }        }         //利用递归,找出所有一级目录的List<CategoryTwo>,这里我把具体实现包装到 findSubCategory()方法中了        categoryTows = findSubCategory(categorys,categoryTows);         //最后就完成了,把数据按需求返回给前端就可以了。        System.out.println(categoryTows);    }     //找出List<CategoryTwo>中所有目录的子级目录    public List<CategoryTwo> findSubCategory(List<Category> categorys,List<CategoryTwo> categoryTwos){         for (CategoryTwo categoryTwo:categoryTwos) {            //找出自身的子级目录,存放到List<CategoryTwo>中去            List<CategoryTwo> categoryTwos2 = new ArrayList<CategoryTwo>();             for (Category category:categorys){                //如果自身的id = 与某个目录的parentId 相等,则这个目录是自身的子级目录                if(categoryTwo.getId() == category.getParentId()){                    categoryTwos2.add(new CategoryTwo(category));                }            }             //所有子级目录找到后,再回调findSubCategory()方法 让子级目录找到自己的子级            List<CategoryTwo> categoryTwos3 = findSubCategory(categorys,categoryTwos2);             //categoryTwos3真正的List<categoryTwo>,把他添加到自身            categoryTwo.setCategorieTwos(categoryTwos3);        }         return categoryTwos;//返回注入好的对象    }

核心就是那个回调的方法,只要把这个搞清楚了,那就很容易了

附另一个实现方法

import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;  public class MenuTest {         public static void main(String[] args) {        MenuTest menuTest = new MenuTest();        List menuList = initMenu();//初始化菜单        Map menuMap = menuTest.rebuildMenus(menuList);//重构菜单        menuTest.showMenu(menuMap);//打印菜单     }             private Map rebuildMenus(List menuList) {        List rootMenuList=new ArrayList();//这个List用来存放根菜单        for (int j = 0; j < menuList.size(); j++) {            Map menu = (Map) menuList.get(j);            String parentId = menu.get("parentId").toString();            if (null==parentId || "".equals(parentId)) {                rootMenuList.add(menu);            }        }        menuList.removeAll(rootMenuList);//将根菜单从menuList中除去        HashMap menuMap = new HashMap();        for (int j = 0; j < rootMenuList.size(); j++) {//遍历根菜单,每一个跟菜单都遍历到最后一个子菜单(叶子节点)            Map menu = (Map) rootMenuList.get(j);            menu = this.pase(menu, menuList);            menuMap.put(menu.get("id"), menu);        }        return menuMap;    }         private Map pase(Map menu, List menuList) {        for (int j = 0; j < menuList.size(); j++) {            Map menu2 = (Map) menuList.get(j);            if (menu2.get("parentId").toString().equals(menu.get("id").toString())) {                if(menu.get("children") == null){                    menu.put("children", new ArrayList());                }                ((List)menu.get("children")).add(menu2);                pase(menu2, menuList);            }        }        return menu;    }        private void showMenu(Map menuMap){        Iterator it = menuMap.keySet().iterator();        while(it.hasNext()){            Map menu = (Map) menuMap.get(it.next());            System.out.println(menu.get("id")+"--"+menu.get("name"));            this.buildChildMenu(menu);        }    }        private void buildChildMenu(Map menu){        List childList = (List) menu.get("children");        if(null!=childList){            for(int i=0;i<childList.size();i++){                Map childMap = (Map) childList.get(i);                System.out.println(childMap.get("id")+"--"+childMap.get("name"));                this.buildChildMenu(childMap);            }        }    }        public static List initMenu(){        List menuList = new ArrayList();                 Map menuMap = new HashMap();        menuMap.put("id", "0000");        menuMap.put("name", "根菜单");        menuMap.put("parentId","");//根菜单的父菜单为空                 Map menuMap1 = new HashMap();        menuMap1.put("id", "1000");        menuMap1.put("name", "一级菜单A");        menuMap1.put("parentId","0000");                 Map menuMap2 = new HashMap();        menuMap2.put("id", "2000");        menuMap2.put("name", "一级菜单B");        menuMap2.put("parentId","0000");                 Map menuMap3 = new HashMap();        menuMap3.put("id", "1100");        menuMap3.put("name", "二级菜单A");        menuMap3.put("parentId","1000");                 Map menuMap4 = new HashMap();        menuMap4.put("id", "1110");        menuMap4.put("name", "三级菜单A");        menuMap4.put("parentId","1100");                 menuList.add(menuMap);        menuList.add(menuMap1);        menuList.add(menuMap2);        menuList.add(menuMap3);        menuList.add(menuMap4);                 return menuList;    }           }

以上是“如何使用Java实现一个简易版的多级菜单功能”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 如何使用Java实现一个简易版的多级菜单功能

本文链接: https://www.lsjlt.com/news/306892.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java实现一个简易版的多级菜单功能
    一:前言 最近老师布置了给多级菜单的作业,感觉蛮有意思的,可以提升自己的逻辑!下面我写个简易版的多级菜单,本人还是菜鸟,欢迎各位给予宝贵的建议! 二:正文 由于是给各位演示,所有我把...
    99+
    2022-11-12
  • 如何使用Java实现一个简易版的多级菜单功能
    小编给大家分享一下如何使用Java实现一个简易版的多级菜单功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!正文1,首先是数据库的设计DROP TABL...
    99+
    2023-06-26
  • 如何使用MySQL和Java实现一个简单的日历功能
    如何使用MySQL和Java实现一个简单的日历功能在现代社会中,人们经常需要管理自己的日程安排和日常事务。一个方便实用的日历功能不仅可以帮助人们有效地管理时间,还可以提醒他们重要事件的到来。本文将介绍如何使用MySQL和Java来实现一个简...
    99+
    2023-10-22
    MySQL Java 日历
  • 如何使用MySQL和Java实现一个简单的订阅功能
    如何使用MySQL和Java实现一个简单的订阅功能随着互联网的发展,订阅功能成为了许多网站和应用程序的常见特性。订阅功能允许用户获取他们感兴趣的内容的更新和通知。在本文中,我将向您介绍如何使用MySQL和Java来实现一个简单的订阅功能。为...
    99+
    2023-10-22
    MySQL Java 订阅功能
  • 如何使用MySQL和Java实现一个简单的聊天室功能
    要使用MySQL和Java实现一个简单的聊天室功能,你需要进行以下步骤:1. 创建数据库和表:使用MySQL创建一个数据库,并在该数...
    99+
    2023-10-10
    MySQL
  • 如何使用MySQL和Java实现一个简单的邮件发送功能
    要使用MySQL和Java实现一个简单的邮件发送功能,你需要遵循以下步骤:1. 创建一个名为"Emails"的MySQL数据库表,包...
    99+
    2023-10-20
    MySQL
  • 如何使用MySQL和Java实现一个简单的文件上传功能
    要使用MySQL和Java实现一个简单的文件上传功能,可以按照以下步骤进行:1. 创建一个MySQL数据库表来存储上传的文件信息。表...
    99+
    2023-10-20
    MySQL
  • 如何使用MySQL和Java实现一个简单的视频分享功能
    如何使用MySQL和Java实现一个简单的视频分享功能随着互联网的普及和带宽的提升,视频分享成为了当今最受欢迎的网络媒体形式之一。在这篇文章中,我们将探讨如何使用MySQL和Java来实现一个简单的视频分享功能。一、数据库设计首先,我们需要...
    99+
    2023-10-22
    MySQL Java 视频分享
  • 如何使用MySQL和Java实现一个简单的电子签名功能
    如何使用MySQL和Java实现一个简单的电子签名功能导语:在我们的日常生活中,电子签名越来越常见。它可以在各种场合中使用,例如电子合同、电子收据和授权文件等。本文将介绍如何使用MySQL和Java来实现一个简单的电子签名功能,并提供具体的...
    99+
    2023-10-22
    MySQL Java 电子签名
  • 如何使用MySQL和Java实现一个简单的电影推荐功能
    如何使用MySQL和Java实现一个简单的电影推荐功能近年来,随着互联网和大数据的普及,电影推荐功能成为很多影视平台的重要组成部分。通过分析用户的喜好和行为,可以精准地推荐给用户适合的电影,提升用户体验和平台的活跃度。本文将介绍如何使用My...
    99+
    2023-10-22
    MySQL Java 电影推荐
  • 如何使用MySQL和Java实现一个简单的数据备份功能
    如何使用MySQL和Java实现一个简单的数据备份功能随着数据的日益增多,数据备份成为了保障数据安全的重要一环。本文将介绍如何使用MySQL和Java实现一个简单的数据备份功能,并给出具体的代码示例。一、数据库备份原理数据库备份,即将数据库...
    99+
    2023-10-22
    MySQL Java 数据备份
  • 如何使用MySQL和Java实现一个简单的排序算法功能
    如何使用MySQL和Java实现一个简单的排序算法功能导言:在软件开发中,排序算法是非常基础且常用的功能之一。本文将介绍如何使用MySQL和Java实现一个简单的排序算法功能,并提供具体代码示例。一、排序算法概述排序算法是将一组数据按照特定...
    99+
    2023-10-22
    排序算法 MySQL Java
  • 如何使用MySQL和Java实现一个简单的搜索引擎功能
    要使用MySQL和Java实现一个简单的搜索引擎功能,可以按照以下步骤进行:1. 创建数据库:首先,使用MySQL Workbenc...
    99+
    2023-10-20
    MySQL
  • 如何使用MySQL和Java实现一个简单的数据清洗功能
    如何使用MySQL和Java实现一个简单的数据清洗功能概述:在进行数据分析和机器学习之前,数据清洗是一个非常重要的步骤。数据清洗可以帮助我们处理缺失值、异常值和重复值等问题,从而提高我们对数据的准确性和可靠性。本文将介绍如何使用MySQL和...
    99+
    2023-10-22
    MySQL Java 数据清洗
  • 如何使用MySQL和Java实现一个简单的文件下载功能
    如何使用MySQL和Java实现一个简单的文件下载功能在现今的信息时代,文件下载已经成为了我们日常生活中不可或缺的一部分。无论是从互联网上下载文档、音乐、视频等媒体文件,还是从企业服务器上下载业务相关的文件,文件下载功能已经成为了许多应用程...
    99+
    2023-10-22
    MySQL Java 文件下载
  • 如何使用Python实现一个简易版Web服务器
    今天小编给大家分享一下如何使用Python实现一个简易版Web服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、简介我...
    99+
    2023-07-05
  • 怎么使用java和redis实现一个简单的热搜功能
    这篇文章主要介绍“怎么使用java和redis实现一个简单的热搜功能”,在日常操作中,相信很多人在怎么使用java和redis实现一个简单的热搜功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用jav...
    99+
    2023-06-29
  • 如何使用MySQL和Java实现一个简单的音乐播放器功能
    如何使用MySQL和Java实现一个简单的音乐播放器功能引言:随着技术的不断发展,音乐播放器已经成为人们日常生活中不可或缺的一部分。本文将介绍如何使用MySQL和Java编程语言来实现一个简单的音乐播放器功能。文章将包含详细的代码示例,用于...
    99+
    2023-10-22
    音乐播放器 MySQL Java
  • 如何使用MySQL和JavaScript实现一个简单的论坛功能
    要使用MySQL和JavaScript实现一个简单的论坛功能,你可以按照以下步骤进行操作:1. 创建数据库表结构:创建一个名为“po...
    99+
    2023-10-20
    MySQL
  • 如何使用MySQL和Ruby实现一个简单的时钟功能
    如何使用MySQL和Ruby实现一个简单的时钟功能时钟功能在各种应用中经常会被使用到,它可以帮助我们记录时间、计时、定时等。在本文中,我们将介绍如何使用MySQL和Ruby来实现一个简单的时钟功能,并提供相应的代码示例。首先,我们需要创建一...
    99+
    2023-10-22
    MySQL Ruby 时钟功能
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作