这段代码 为什么map里的键和值都为空

来源:百度知道 编辑:UC知道 时间:2024/05/31 06:36:47
String id=request.getParameter("id");
int num=Integer.parseInt(request.getParameter("num"));
String name=request.getParameter("name");
String price= request.getParameter("price");
boolean flag=false;
if(request.getSession().getAttribute("foodMap")!=null){
Map<String,Food> foodMap=(Map<String, Food>) request.getSession().getAttribute("foodMap");
for(String s:foodMap.keySet()){
if(s.equals(id)){
foodMap.get(s).setFoodNum(foodMap.get(s).getFoodNum()+num);
foodMap.put(s,foodMap.get(s));
flag=true;
}
}
if(flag==false){
Food food=new Food();
food.setFoodId(id);
food.setFoodName(name);
food.setFoodNum(num);
food.setFoodPrice(price);
foodMap.put(id,food);
}
request.getSession().setAttribute("foodMap", foodMap);
}
else

基本意思看明白了,但代码写得太乱。if/else的嵌套写得太复杂,完全没必要。
1、先判断一下session里面有没有"foodMap",没有就new叫foodMap的变量,同时放到session里面。(这里一个if/else,不影响下面)
2、在foodMap里面找有没key是id的entry,用containKey()方法就可以了,不必循环;如果找到,取value出来加num再放回去;如果找不到,直接加一个新的entry。(这里再一个if/else,不受上面影响)

真乱。