package org.jndx.util;import java.util.HashMap;
import java.util.Map;import org.jndx.pojo.Product;public class ShoppingCart {
private Map map=new HashMap();


public void addProducts(Product p,int num){

if(map.containsKey(p.getId())){
Items items=(Items)map.get(p.getId());//就是这句话,到底是什么意思啊?这样子为什么就能让
                                      //items指向指定的商品?然后在指定的商品上加上数量?
                                                        //为什么要强行转换为Items类呢?
items.addNums(num);

}else{

map.put(p.getId(), new Items(p,num));


}

}
public void delProduct(Product p,int num){

//map.remove(key)

}
public void print(){

/*
 * 
 * --------------------------
 * 1   mianbao   4      2.5   10
 * 2
 * 3-------------------------------
 * 
 * 
 * 
 *   */


}
}package org.jndx.util;import org.jndx.pojo.Product;public class Items {
private Product p;
private int num;
public Product getP() {
return p;
}
public void setP(Product p) {
this.p = p;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public Items(Product p, int num) {
super();
this.p = p;
this.num = num;
}
public void addNums(int num){
this.num+=num;

}}

解决方案 »

  1.   

    产品Product p是有id的
    如果购物车Map<String pid, Items items>()里已经有当前产品的记录,根据p.getid()得到对应的项目item并强制转换为Items,然后购买数量加上传进来的参数num
    如果没有当前购买产品的记录,就往把当前产品的id,和new的Items放进Map(购物车),并设置购买数量为传进来的参数num
    这有什么难以理解的吗?
      

  2.   

    Items items=(Items)map.get(p.getId);map是存储的键值对,get方法通过key,找到存储该商品的记录
    Items类有商品\数量组成
    get方法获取的是一条Items记录
    转换之后就可以改变数量了用Product.Id作为key设计购物车不好,比如同一种编号的商品,由于批次不同,价格略有差异时,这里就不好处理了
      

  3.   

    Items items=(Items)map.get(p.getId());//就是这句话,到底是什么意思啊?这样子为什么就能让
    //items指向指定的商品?然后在指定的商品上加上数量?
    //为什么要强行转换为Items类呢?
    items.addNums(num);拿到key(就是p.getId())所对应的值value,再将它强制装换成Items类型。应为items.addNums(num)的存在,所以要强制转换。一个是为了初始化items,一个是为了调用Items的方法。
      

  4.   

    Items items=(Items)map.get(p.getId());//map里放的是object对象,获取的时候要获取正确的对象类型,所以就强制转换下
      

  5.   

    主要的问题是 面向对象的设计,把Items 作为一个对象,p.getId()找到对象的标示  也就是id. 这是为何转化的根本原因。
      

  6.   

    如果购物车Map<String pid, Items items>()里已经有当前产品的记录,根据p.getid()得到对应的项目item并强制转换为Items,然后购买数量加上传进来的参数num
    如果没有当前购买产品的记录,就往把当前产品的id,和new的Items放进Map(购物车),并设置购买数量为传进来的参数num
    map里放的是object对象 赋值给Items转换很正常啊。