// 将当前购物项加入购物车之前,判断之前是否买过这类商品
// 如果没有买过 list.add();
// 如果买过:获取到原先的数量,获取到本次的数量,相加之后设置到原先购物项上
if (map.containsKey(pid)) {// 查看当前map集合当中有没有和传递进来的pid相同的key
// 获取到原先的购物项
CartItem oldItem = map.get(pid);
oldItem.setNum(oldItem.getNum() + cartItem.getNum());
} else {
// 如果没有对应的key对应pid的话说明之前没有商品
map.put(pid, cartItem);// 将该商品放入到map对象集合当中
}
}
// 移除购物项
public void removeCartItem(String pid) {
map.remove(pid);
}
// 用户点击移除购物项的链接的时候,可以将当前的的购物类别的商品的id发送到服务端
// 清空购物车
public void clearCart() {
map.clear();
}
// 总计是可以经过计算获取到
public double getTotal() {
//向让总计清零
total=0;
// 获取到Map集合中所有的购物项
Collection values = map.values();
// 遍历所有的购物项,将购物项上的小计相加
for (CartItem cartItem : values) {
total += cartItem.getSubTotal();
}
return total;// 返回的是所有价格的总和
}
public void setTotal(double total) {
this.total = total;
}
public Map<String, CartItem> getMap() {
return map;
}
public void setMap(Map<String, CartItem> map) {
this.map = map;
}
}
Cart (list类型)
//2个属性3个方法
public class Cart02 {
// 总计/积分
private double total;
//个数不确定的购物项
private List list = new ArrayList();
// 添加购物项到购物车
// 当用户点击加入购物车按钮,可以将当前要购买的商品和商品的id和商品的数量发送到服务端,服务端根据商品的id查询到商品的信息
// 有了商品的信息Product对象,有了要购买商品的数量,当前的购物项也就可以获取到了
public void addCartItemToCart(CartItem cartItem) {
// 将当前的购物项加入购物车之前,判断之前是否买过这一类商品
// 如果没有买过 list.add(cartItem);//将相应商品对应的类放入到集合当中
// 如果买过:获取到原先的数量,获取到本次的要购买的数量,相加之后再设置到原先的购物项上
// 设置变量,默认为false,没有购买过商品
boolean flag = false;
//存储原先购物项
CartItem old = null;
//遍历的是已经存在的商品的list集合
for (CartItem cartItem2 : list) {// 遍历list集合当中的CartItem对象
//判断传入的CartItem的product当中pid和之前list当中CartItem的product当中的pid是否相同
if (cartItem2.getProduct().getPid().equals(cartItem.getProduct().getPid())) {
flag=true;
//如果相等说明之前有这个旧商品赋值给对应的商品赋值给CartItem old
old=cartItem2;
}
}
//如果flag是false的话,说明没有与之前list集合当中对象的pid重复的就直接将传入进来的商品项传入到
if(flag == false) {//之前没有这个商品
list.add(cartItem);//将新的商品添加到旧商品的list集合当中
}else {//之前有这个商品
//获取到原先的数量和现在的数量
old.setNum(old.getNum()+cartItem.getNum());//获取到原先该商品的数量加上
}
}
// 移除购物项
// 用户点击移除购物项的链接的时候,可以将当前的的购物类别的商品的id发送到服务端
public void removeCartItem(String pid) {
// 遍历List,看每个CartItem上的product对象上的id是否和服务端获取到的pid相等,如果相等,删除当前的购物项
for (CartItem cartItem : list) {
if (cartItem.getProduct().getPid().eq