运用集合实现简易的购物车模块:
可以生成订单号,日期。
效果:
目录结构:
源代码如下:
package entity; public class Product { private Integer pid; private String name; private float price; public Product() { super(); } public Product(Integer pid, String name, float price) { super(); this.pid = pid; this.name = name; this.price = price; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((pid == null) ? 0 : pid.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Product other = (Product) obj; if (pid == null) { if (other.pid != null) return false; } else if (!pid.equals(other.pid)) return false; return true; } public Integer getPid() { return pid; } public void setPid(Integer pid) { this.pid = pid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } }
package map; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import util.DateHelper; import util.GenerateID; import entity.Product; public class ShoppingCar { private Map<Product,Integer> m=new HashMap<Product,Integer>(); //private Map<Product,Integer> m=new LinkedHashMap<Product,Integer>(); private float total; public void addProduct(Product p){ //计算该购物车中是否存在该产品 if(m.containsKey(p)){ int oldValue=m.get(p); m.put(p,oldValue+1); }else{ m.put(p,1); } } public static void main(String[] args) { Product p1=new Product(111,"牙膏",14); Product p2=new Product(123,"篮球",68); Product p3=new Product(123,"篮球",68); Product p4=new Product(888,"黄焖鸡",17); ShoppingCar mycar=new ShoppingCar(); mycar.addProduct(p4); mycar.addProduct(p1); mycar.addProduct(p2); mycar.addProduct(p3); mycar.print(); } public float getTotal(){ total=0; Iterator<Product> it=m.keySet().iterator(); while(it.hasNext()){ Product p=it.next(); float price=p.getPrice(); int num=m.get(p); total+=price*num; } return total; } public void removeProduct(Product p){ } public void clearCar(Product p){ } public void print(){ System.out.println("\t\t\t\t\t\t 订单号:"+GenerateID.id()); System.out.println("————————————————————————————————————————————————————————————————————————————————"); System.out.println("序号\t\t产品名\t\t商品单价(¥)\t\t数量\t\t小计(¥)"); System.out.println("————————————————————————————————————————————————————————————————————————————————"); Iterator<Product> pit=m.keySet().iterator(); int no=0; while(pit.hasNext()){ no++; Product p=pit.next(); int val=m.get(p); System.out.println(no+"\t\t"+p.getName()+"\t\t"+p.getPrice()+"\t\t\t"+val+"\t\t"+(p.getPrice()*val)); System.out.println("——————————————————————————————————————————————————————————————————————————————"); } System.out.println("\r\n\r\n\t\t\t\t\t\t总计:" +getTotal()); System.out.println("\t\t\t\t\t\t日期:"+DateHelper.format("yyyy年MM月dd日hh时mm分ss秒")); } }
package util; import java.text.SimpleDateFormat; import java.util.Date; public class DateHelper { public static String format(String pattern){ SimpleDateFormat sf=new SimpleDateFormat(pattern); return sf.format(new Date(System.currentTimeMillis())); } }
package util; import java.util.Random; public class GenerateID { //public synchronized static String id(){ /*String first=DateHelper.format("yyyyMMddhhmmss"); Random r1=new Random(System.currentTimeMillis()); String n1=r1.nextInt(10)+""; Random r2=new Random(System.currentTimeMillis()); String n2=r2.nextInt(10)+""; Random r3=new Random(System.currentTimeMillis()); String n3=r3.nextInt(10)+""; Random r4=new Random(System.currentTimeMillis()); String n4=r4.nextInt(10)+""; Random r5=new Random(System.currentTimeMillis()); String n5=r5.nextInt(10)+"";*/ public synchronized static String id(){ String first=DateHelper.format("yyyyMMdd"); String second=""; Random random=new Random(); for(int i=0;i<5;i++){ second+=String.valueOf(random.nextInt(10)); } // } return first+second; //return first+n1+n2+n3+n4+n5; } }