我觉得临时购物车存放用list更好,只是多了一个遍历,而且在显示临时购物车的时候,service层更方便,都不用转换
public void addCart(Long id, int num) {
//创建一个存放临时购物车的容器
List<CartPoJo> cartPoJos = new ArrayList<>();
// 第一次操作:cookie 中没有任何数据时,
String cookieValue = CookieUtils.getCookieValueBase64(ServletUtil.getRequest(), temCartKey);
//判断cookie里有没有数据
if (Strings.isNotEmpty(cookieValue)){// 当前 Cookie 已经存在临时购物车商品
//将cookie里的商品数据转换为临时购物车容器
cartPoJos = JsonUtils.jsonToList(cookieValue,CartPoJo.class);
for (CartPoJo cartPoJo : cartPoJos) {
// 判断是否已经存在当前商品,如果存在则数量加1,不存在则加入购物车
if (cartPoJo.getId()==id){
cartPoJo.setNum(cartPoJo.getNum()+num);
CookieUtils.doSetCookieBase64(ServletUtil.getRequest(),ServletUtil.getResponse(),temCartKey,JsonUtils.objectToJson(cartPoJos),2592000);
return;
}
}
}
//如果不存在则创建购物车商品
String key = redisKey+id;
//
TbItemDetails tbItemDetails = (TbItemDetails) this.redisTemplate.opsForValue().get(key);
CartPoJo cartPoJo = new CartPoJo();
cartPoJo.setId(id);
cartPoJo.setNum(num);
cartPoJo.setImages(tbItemDetails.getImages());
cartPoJo.setPrice(tbItemDetails.getPrice());
cartPoJos.add(cartPoJo);
CookieUtils.doSetCookieBase64(ServletUtil.getRequest(),ServletUtil.getResponse(),temCartKey,JsonUtils.objectToJson(cartPoJos),2592000);
}
用map和list容器,哪个效率更高?????????