会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132437个问题
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 18631楼
Python 全系列/第五阶段:数据库编程/mysql介绍与环境安装 18638楼
Python 全系列/第一阶段:Python入门/控制语句 18639楼

我觉得临时购物车存放用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容器,哪个效率更高?????????

JAVA 全系列/第十八阶段:亿级高并发电商项目_架构/编码(旧)/电商:基于Cookie和Redis实现临时购物车和用户购物车 18640楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 18641楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 18643楼
JAVA 全系列/第二十三阶段:容器管理技术/Docker 18645楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637