相关博客: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;@Overridepublic 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);}@Overridepublic int hashCode() {return Objects.hashCode(id, name, price, imgs);}
}

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

实现一: 使用Map<商品,购买数量> 表示商品(建议)

public class CartDemo{public static void main(String[] args) {Map<Goods,Integer> 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<Goods, Integer> 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<Integer, Integer> 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);});}

Java代码模拟实现购物车相关推荐

  1. java代码模拟大乐透

    java代码模拟大乐透 前区1-35随机5位不重复从小到大排列,后区1-12随机2位不重复从小到大排列 //模拟大乐透 public class DaLeTou {public static void ...

  2. Java代码模拟Redis

    Redis是C语言编写的NoSQL 存储形式是K->V 可以搭建集群(健壮) 相比memcached一个key对应的value最大只能存储1M而言Redis则十分慷慨可以支持1G(如果你内存足够 ...

  3. Java代码模拟一个Post请求

    Java代码模拟一个Post请求 ​ 我们常用的http请求无非GET和POST.在springboot项目中,我们如果想要测试一段代码无非就是项目跑起来,然后在浏览器中通过输入url,看浏览器中(按 ...

  4. java实现转账功能_如何利用Java代码模拟银行转账这一功能?

    今天是刘小爱自学Java的第70天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: 转账,相信基本都接触过,无论是线下用银行卡转账还是线上用手机转账,本质上都是差不多的. 一.转账案例 需要两个 ...

  5. 银行转账java mysql_如何利用Java代码模拟银行转账这一功能?

    今天是刘小爱自学Java的第70天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: 转账,相信大家基本都接触过,无论是线下用银行卡转账还是线上用手机转账,本质上都是差不多的. 一.转账案例 需要 ...

  6. java 模拟网页_使用Java代码模拟网页登录(有例子程序)

    最近股票很火,打算研究用代码下载股票数据,于是我做了一个Java代码的模拟IE网页登录的程序, 登录新浪的股票页面并下载一些数据来分析, 基本原理是利用Java自带的HttpURLConnection ...

  7. java 代码模拟抽奖(练习)

    题目:一个大V直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金.请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复.打印效果如下:(随机顺序,不一定是 ...

  8. android java 指针_Android中用Java代码模拟鼠标指针(可显示于整个系统界面之上)...

    Android有几款平板是有USB接口,连上鼠标后,界面上面就会出现一个鼠标指针,然后就可以用鼠标代替手势操作平板了,最近有项目需要用到鼠标指针,但是苦于不知道怎么调出系统的鼠标指针,所以只能用代码去 ...

  9. Android中用Java代码模拟鼠标指针(可显示于整个系统界面之上)

    Android有几款平板是有USB接口,连上鼠标后,界面上面就会出现一个鼠标指针,然后就可以用鼠标代替手势操作平板了,最近有项目需要用到鼠标指针,但是苦于不知道怎么调出系统的鼠标指针,所以只能用代码去 ...

  10. 适配器设计模式,简单的Java代码模拟

    /**适配器设计模式* 问题:* 接口(方法比较多)--实现类(仅仅使用一个也得把其他方法给实现了,哪怕是空实现)* 结局方案:* 接口(方法比较多)--适配器类(实现接口,仅仅是空实现)--实现类( ...

最新文章

  1. MySQL Profiling 的使用
  2. java 中间件_从头到尾说一遍Java(中间件)垃圾回收
  3. ios11最新版本_iOS11.2.5 beta6怎么升级 哪些设备可以升级iOS11.2.5系统【详解】
  4. Ubuntu 16.04 安装Matlab R2015b
  5. 因循守旧最好:都是CPU架构,为什么你叫sw_64,而不是sw64?多别扭啊
  6. word怎么显示计算机数字,如何键入word2007圆圈数字1到10及以上?
  7. 验票系统认证服务器地址,北京增值税发票勾选认证(选择确认)平台入口
  8. esxi能直通的显卡型号_2020最适合新手CG玩家的电脑配置【显卡--专业卡、游戏卡】...
  9. html渐变编织背景,CSS hover背景/文字渐变效果
  10. 解决多旅行商(MTSP)的分组遗传算法(GGA-SS)
  11. ollydbg(避坑-1) jiack 无法作为一个实时调试器附加到进程 解决方案
  12. 关于投票活动主办方对于微信上投票怎样刷票及微信投票怎样查刷票
  13. 寒山是一位高僧,拾得是一位和尚。
  14. 一文带你读懂何为 macOS App 公证,以及如何自动化实现
  15. 彻底搞懂MySQL的索引
  16. 字节跳动全员降薪17%,员工都「炸锅了」
  17. 单点登录CAS学习(一):初识单点登录
  18. 【题解】「JSOI2012」玄武密码(AC自动机)
  19. jmeter+influxdb2+grafana的安装与使用
  20. 必看干货!微信营销话术,微信营销技巧有哪些

热门文章

  1. 1核2g服务器能干什么_国内哪个云服务器比较便宜性价比高?大家有什么好推荐...
  2. java泛型要用t,Java泛型中T和問號(通配符)的區別
  3. C语言(面积计算器)不能输入负数[程序以要求]
  4. 有赞 插入html,有赞 前端工程师面试题
  5. Android资源之图像资源(淡入淡出、嵌入)
  6. 《Python数据分析实战》3 NumPy库
  7. js通过FormData对象 异步提交文件 实现文件上传(附带参数)
  8. BZOJ 1497: [NOI2006]最大获利(最大权闭合图)
  9. R Programming: Part 3 - Code Correctly and Efficiently
  10. App_Offline.htm 功能,app_offline.htm 是怎样产生的?