JavaWeb后台购物车类实现代码详解
相信大家肯定都在电商网站买过东西,当我们看中一件喜欢又想买的东西时,这时候你又不想这么快结账,这时候你就可以放入购物车;
就像我们平时去超市买东西一样,会推着购物车去买东西;
那么我们接下来看看java怎么实现购物车的功能,其实原理很简单,java的特点就是面向对象,并且有着封装继承多态三大特性;
java实现这个购物车功能是通过内存来实现的而不是将数据添加到数据库中
首先是Item类,一个Item就代表购物车里面的一行数据
package com.wxd.shopping; public class Item { private int id; //商品id private String name;//商品名称 private String city;//商品产地 private double price;//商品价格 private int number;//商品数量 private String picture;//商品图片地址 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public String getPicture() { return picture; } public void setPicture(String picture) { this.picture = picture; } /** * 重写hashCode方法,使得在购物车添加商品的时候,如果id和名称相同就判定为同一件商品 * @return */ @Override public int hashCode() { return (this.getId()+this.getName()).hashCode(); } /** * 重写equals方法,判断是否为同一个对象 * @param obj * @return */ @Override public boolean equals(Object obj) { if(this==obj){ return true; } if(obj instanceof Item){ Item i= (Item) obj; if(this.getId()==i.getId()&&this.getName().equals(i.getName())){ return true; }else{ return false; } }else{ return false; } } @Override public String toString() { return "Item{" + "id=" + id + ", name='" + name + '\'' + ", city='" + city + '\'' + ", price=" + price + ", number=" + number + ", picture='" + picture + '\'' + '}'; } //有参构造 public Item(int id, String name, String city, double price, int number, String picture) { this.id = id; this.name = name; this.city = city; this.price = price; this.number = number; this.picture = picture; } //无参构造 public Item() { } }
购物车类分装了Item和数量的一个集合,还有商品的总金额
下面是购物车类的详细代码以及测试方法:
package com.wxd.shopping; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; //购物车 public class Cart { //购买商品的集合 private HashMap<Item,Integer> goods; //购物车的总金额 private double totalPrice; //构造方法初始化数据 public Cart(){ goods=new HashMap<Item,Integer>(); totalPrice=0.0; } public HashMap<Item, Integer> getGoods() { return goods; } public void setGoods(HashMap<Item, Integer> goods) { this.goods = goods; } public double getTotalPrice() { return totalPrice; } public void setTotalPrice(double totalPrice) { this.totalPrice = totalPrice; } //添加商品进购物车的方法 public boolean addGoodsInCart(Item item,int number){ if(goods.containsKey(item)){ goods.put(item,goods.get(item)+number); }else{ goods.put(item,number); } calTotalPrice();//重新计算购物车的总金额 return true; } //删除商品的方法 public boolean removeGoodsFromCart(Item item){ goods.remove(item); calTotalPrice();//重新计算购物车的总金额 return true; } //统计购物车的总金额 public double calTotalPrice(){ double sum=0.0; Set<Item> keys=goods.keySet(); Iterator<Item> iterator = keys.iterator(); while (iterator.hasNext()){ Item i = iterator.next(); sum+=i.getPrice()*goods.get(i); } this.setTotalPrice(sum);//设置购物车的总金额 return this.getTotalPrice(); } //测试的main方法 public static void main(String[] args) { //先创建两个商品对象 Item i1=new Item(1,"耐克","温州",300.0,500,"001.jpg"); Item i2=new Item(2,"阿迪","广州",500.0,500,"001.jpg"); Item i3=new Item(1,"耐克","温州",300.0,500,"001.jpg"); Cart c=new Cart(); c.addGoodsInCart(i1,1); c.addGoodsInCart(i2,2); //再次购买耐克鞋 c.addGoodsInCart(i3,3); //遍历购买商品的集合 HashMap<Item, Integer> goods = c.getGoods(); Set<Map.Entry<Item, Integer>> entries = goods.entrySet(); for(Map.Entry<Item, Integer> itemEntry:entries){ System.out.println(itemEntry.toString()); } System.out.println("购物车总金额:"+c.getTotalPrice()); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。
相关文章
- 这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
- 这篇文章主要为大家详细介绍了ASP.NET购物车的实现过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
java 运行报错has been compiled by a more recent version of the Java Runtime
java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01- 这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
Springboot如何实现Web系统License授权认证
这篇文章主要介绍了Springboot如何实现Web系统License授权认证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-28- 这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
- 这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
C#使用Http Post方式传递Json数据字符串调用Web Service
这篇文章主要为大家详细介绍了C#使用Http Post方式传递Json数据字符串调用Web Service,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25- 说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
- 这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
- 这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
java 画pdf用itext调整表格宽度、自定义各个列宽的方法
这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31- 这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
InterlliJ IDEA2020新建java web项目找不到Static Web的解决
这篇文章主要介绍了InterlliJ IDEA2020新建java web项目找不到Static Web的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-02- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15- 这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
这篇文章主要介绍了在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11- 这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29