请问老师关于"图书分类"的问题?

请问老师关于"图书分类"的问题?

由于作业要求是“图书分类并不需要定义一个单独的类”,那么在实际功能实现还是有问题,比如要实现对图书分类进行新增时想要遍历整个集合时怎样实现遍历的效果呢?比如作业中的"book"是有类的,那么在新增时可以使用类似与“for (Book boof : bookList) { }”来遍历整个bookList,但是在图书分类中的就不能实现,请问老师这种该怎么解决呢?


正在回答

登陆购买课程后可参与讨论,去登陆

4回答

你判断下图中的mapList是否为null?是否获取到值?然后在看看有没有将map集合添加到List<Map<String,String>>中?如果mapList中没有值就会循环了,也不会执行System.out.println("map1");这行代码了。祝学习愉快~

http://img1.sycdn.imooc.com//climg/5b56be5a0001640a14020091.jpg

提问者 慕虎8754231 2018-07-24 11:23:52
package com.java.servlet;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.java.user.User;

/**
 * 对图书分类进行信息保存的Servlet
 */
@WebServlet("/CatgoryServlet")
public class CatgoryServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取工程名
		String path = request.getContextPath();
		//获得context的信息
		List<Map<String, String>> mapList=(List<Map<String, String>>)this.getServletContext().getAttribute("map");
		//获得请求参数
		String  catgoryId=request.getParameter("id");
		String  catgoryName=request.getParameter("catgoryName");
		String  catgoryDec=request.getParameter("description");
		System.out.println("map2");
		Map<String, String> catgoryMap=new HashMap<String, String>();
		System.out.println("map3");
		for (Map<String, String> map1 : mapList) {
			System.out.println("map1");
			 //如果找到相同的id或名称,提示用户该图书分类已存在,请勿重复添加
			if(map1.containsKey("catgoryId")) {
				response.sendRedirect(path+"/catgory.jsp?message=0");
				System.out.println("图书分类id或名称重复,已返回到界面");
                return;  
			}else {
				catgoryMap.put("catgoryId", catgoryId);
				catgoryMap.put("catgoryName", catgoryName);
				catgoryMap.put("catgoryDec", catgoryDec);
				mapList.add(catgoryMap);
				this.getServletContext().setAttribute("map",catgoryMap);
				System.out.println("添加成功!");
			}
		}	
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

额,请问老师为什么代码不执行for循环里面的代码呢?

http://img1.sycdn.imooc.com//climg/5b569bc50001d2e208230543.jpg

chrismorgen 2018-07-20 18:09:07

想要检测id是否重复添加,你只需要获得用户录入的id和图书分类的集合就可以实现你说的功能,如下图所示,先判断用户录入的id是否存在于bookClassMap集合中,如果存在则返回true,不存在则返回false,如果flag为false,则执行添加分类,是这样的逻辑,对于同学说的“图书分类并不需要定义一个单独的类”这里不是很理解,祝学习愉快~

http://img1.sycdn.imooc.com//climg/5b51b3350001cce208840423.jpg

  • 提问者 慕虎8754231 #1
    麻烦老师看看上面的问题呢?
    2018-07-24 13:24:29
chrismorgen 2018-07-20 17:27:46

对图书分类进行添加时不需要遍历整个集合,只需要向map集合中添加数据即可。根据你的描述,我不是很清楚你的整个思路,对于添加图书分类,只需要创建一个map集合用来存储图书分类的信息就可以了,如下图所示。

http://img1.sycdn.imooc.com//climg/5b51aa7a0001a2d605050130.jpg

  • 提问者 慕虎8754231 #1
    额,这个我知道可以添加的,但是这样添加的id如果再新加入的id之前已经添加过怎样检测呢?
    2018-07-20 17:31:11
  • 提问者 慕虎8754231 #2
    好的,我试试呢
    2018-07-24 13:28:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师