您当前的位置: 首页 >  Java

Java代码模拟实现购物车

梁云亮 发布时间:2021-07-20 16:57:03 ,浏览量:3

相关博客:https://hcshow.blog.csdn.net/article/details/119052399

商品
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class Goods {
    private Integer id;
    private String name;
    private double price;
    private String imgs;

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        Goods goods = (Goods) o;
        return Double.compare(goods.price, price) == 0 &&
                Objects.equal(id, goods.id) &&
                Objects.equal(name, goods.name) &&
                Objects.equal(imgs, goods.imgs);
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(id, name, price, imgs);
    }
}

注:通过重写equals和hashCode两个方法实现往Set中添加商品时,同一种商品在购物车中不被当作两个元素。

实现一: 使用Map 表示商品(建议)
public class CartDemo{
    public static void main(String[] args) {
        Map cart = new HashMap();
        //第一次购买1号商品3个
        Goods key = new Goods(1,"honor",22,"honor.jpg");
        int amount =3;
        addGoods2Cart(cart, key, amount);
        //第二次购买1号商品4个
        key =new Goods(1,"honor",22,"honor.jpg");
        amount =4;
        addGoods2Cart(cart,key,amount);
        //第三次购买3号商品1个
        key =new Goods(3,"xiaomi",11,"xiaomi.jpg");
        amount =1;
        addGoods2Cart(cart,key,amount);
        cart.forEach((k,v)-> System.out.println(k+" : "+v));
    }

    private static void addGoods2Cart(Map cart, Goods key, int amount) {
        if(cart.containsKey(key)){//如果新买商品已包含
           cart.put(key,cart.get(key)+amount) ;
        }else{//未包含
            cart.put(key,amount);
        }
    }
}
实现二 :使用Map 表示商品(不建议)
    public static void main(String[] args) {
        //商品的id   商品的数量
        Map cart = new HashMap();
        //第一次购买1号商品3个
        cart.put(1, 4);
        //第二次购买1号商品4个
        cart.put(1, 3);
        //第三次购买3号商品1个
        cart.put(3, 1);

        //输出购物车中的内容
        cart.forEach((k,v)->{
            //从数据库中根据Goods的id,查询出Goods的详情
            Goods goods = new Goods(); //每次查看购物车都需要查询,效率不高
            goods.setId(k);
            System.out.println(goods +" : "+v);
        });
    }
关注
打赏
1688896170
查看更多评论

梁云亮

暂无认证

  • 3浏览

    0关注

    1176博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0466s