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;
}}
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;
}}
如果购物车Map<String pid, Items items>()里已经有当前产品的记录,根据p.getid()得到对应的项目item并强制转换为Items,然后购买数量加上传进来的参数num
如果没有当前购买产品的记录,就往把当前产品的id,和new的Items放进Map(购物车),并设置购买数量为传进来的参数num
这有什么难以理解的吗?
Items类有商品\数量组成
get方法获取的是一条Items记录
转换之后就可以改变数量了用Product.Id作为key设计购物车不好,比如同一种编号的商品,由于批次不同,价格略有差异时,这里就不好处理了
//items指向指定的商品?然后在指定的商品上加上数量?
//为什么要强行转换为Items类呢?
items.addNums(num);拿到key(就是p.getId())所对应的值value,再将它强制装换成Items类型。应为items.addNums(num)的存在,所以要强制转换。一个是为了初始化items,一个是为了调用Items的方法。
如果没有当前购买产品的记录,就往把当前产品的id,和new的Items放进Map(购物车),并设置购买数量为传进来的参数num
map里放的是object对象 赋值给Items转换很正常啊。