创建购物车实体类,模拟购物车功能

题目:
创建购物车实体类,模拟购物车功能(内部使用HashMap,key是商品,value是商品的数量)
需求:
1)添加商品到购物车(输入商品的编号和数量)
2)删除商品(删除购物车中的指定购物项)
3)修改商品(修改商品的数量)
4)显示所购买的商品信息(按购买商品的总价进行升序显示)(可以通过TreeMap的构造方法,传入一个HashMap生成一个TreeMap)

代码:
mport java.util.Comparator;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

public class Ex2 {
public static void main(String[] args) {
Product p1 = new Product(1, “苹果”, 5);
Product p2 = new Product(1, “香蕉”, 6);
Product p3 = new Product(1, “雪梨”, 7);
Product p4 = new Product(1, “西瓜”, 8);
ShoppingCart sc = new ShoppingCart();
// 添加商品到购物车
sc.getMap().put(p1, 10);
sc.getMap().put(p2, 20);
sc.getMap().put(p3, 30);
sc.getMap().put(p4, 40);
// 删除购物车中的指定商品
sc.getMap().remove(p2);
// 修改购物车中的商品数量
sc.getMap().put(p1, 100);
// 修改购物车中的商品信息
p1.setPrice(100);
// 显式所有商品
sc.showAllProducts();
}

}

// 购物车
class ShoppingCart {
// private List list;

private HashMap<Product, Integer> map;


public ShoppingCart() {
    super();
    this.map = new HashMap<Product, Integer>();
}

public HashMap<Product, Integer> getMap() {
    return map;
}

public void setMap(HashMap<Product, Integer> map) {
    this.map = map;
}

public void showAllProducts() {
    // 排序
    // Collections.sort(list);
    TreeMap<Product, Integer> tm = new TreeMap<Product, Integer>(new Comparator<Product>() {
        @Override
        public int compare(Product o1, Product o2) {
            if (o1.getPrice() * map.get(o1) > o2.getPrice() * map.get(o2)) {
                return 1;
            } else if (o1.getPrice() * map.get(o1) < o2.getPrice() * map.get(o2)) {
                return -1;
            } else {
                return 0;
            }
        }
    });
    tm.putAll(map);
    Set<Entry<Product, Integer>> entrySet = tm.entrySet();
    for (Entry<Product, Integer> entry : entrySet) {
        Product product = entry.getKey();
        Integer count = entry.getValue();
        System.out.println(product + ",数量:" + count + ",总价:" + product.getPrice() * count);
    }
}

}

// 商品
class Product {
private int num;
private String name;
private double price;
// private int count;

public Product(int num, String name, double price) {
    super();
    this.num = num;
    this.name = name;
    this.price = price;
}

public int getNum() {
    return num;
}

public void setNum(int num) {
    this.num = num;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public double getPrice() {
    return price;
}

public void setPrice(double price) {
    this.price = price;
}

@Override
public String toString() {
    return "Product [num=" + num + ", name=" + name + ", price=" + price + "]";
}

}

import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; /** * 购物车类 */ public class Cart { //创建一个map对象,用来保存商品,key为商品,value为商品的数量 private Map<Goods, Integer> map = new HashMap<Goods, Integer>(); /** * 添加商品到购物车方法 * @param id 商品编号 * @param quantity 商品数量 */ public void addGoods(int id, int quantity){ Goods goods = GoodsDB.goodsMap.get(id); if(goods!=null){ Integer oQuantity = map.get(goods);//获取商品在购物车中原本的数量 if(oQuantity!=null){ oQuantity += quantity; }else{ oQuantity = quantity; } map.put(goods, oQuantity);//添加商品到map中 System.out.println("添加商品"+goods.getName()+"成功!"); }else{ System.out.println("添加失败!商品编号不存在!"); } } /** * 按指定的编号删除商品 * @param id 商品编号 */ public void delGoods(int id){ Goods goods = GoodsDB.goodsMap.get(id); if(goods!=null){ map.remove(goods);//从map删除商品 System.out.println("删除商品"+goods.getName()+"成功!"); }else{ System.out.println("删除失败!商品编号不存在!"); } } /** * 修改商品数量方法 * @param id 商品编号 * @param quantity 要修改的商品数量 */ public void updateGoods(int id, int quantity){ Goods goods = GoodsDB.goodsMap.get(id); if(goods!=null){ map.put(goods, quantity);//从map删除商品 }else{ System.out.println("修改失败!商品编号不存在!"); } } /** * 打印购物车商品列表 */ public void show(){ Set<Entry<Goods, Integer>> entrySet = map.entrySet(); System.out.println("编号\t单价\t数量\t名称\t总价"); for(Entry<Goods, Integer> entry:entrySet){ Goods goods = entry.getKey(); Integer quantity = entry.getValue(); System.out.println(goods.getId()+"\t"+goods.getPrice()+"\t"+quantity+"\t"+goods.getName()+"\t"+goods.getPrice()*quantity); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值