Java Web 网络商城案例演示十三(抽取购物车模块,实现购物车功能)

后记总结一下这三次面试下来我的经验是:一定不要死记硬背,要理解原理,否则面试官一深入就会露馅!代码能力一定要注重,尤其是很多原理性的代码(之前两次让我写过Node中间件,Promise.all,双向绑定原理,被虐的怀疑人生)!尽量从面试官的问题中表现自己知识的深度与广度,让面试官发现你的闪光点!多刷面经!
摘要由CSDN通过智能技术生成

// 将当前购物项加入购物车之前,判断之前是否买过这类商品

// 如果没有买过 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

  • 12
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值