天天看点

LinkedHashMap类 - 实现购物车案例

一、产品类

public class Product {
    private int productId;
    private String productName;
    private String category;
    private float price;
    private String picture;

    @Override
    public String toString() {
        return "Product{" +
                "productId=" + productId +
                ", productName='" + productName + '\'' +
                ", category='" + category + '\'' +
                ", price=" + price +
                ", picture='" + picture + '\'' +
                '}';
    }

    public int getProductId() {
        return productId;
    }

    public void setProductId(int productId) {
        this.productId = productId;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public float getPrice() {
        return price;
    }

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

    public String getPicture() {
        return picture;
    }

    public void setPicture(String picture) {
        this.picture = picture;
    }

    public Product(int productId, String productName, String category, float price, String picture) {
        this.productId = productId;
        this.productName = productName;
        this.category = category;
        this.price = price;
        this.picture = picture;
    }

    public Product() {
    }
}      

二、产品列表类

public class ProductItem {
    private Product product;
    private int count;

    @Override
    public String toString() {
        return "ProductItem{" +
                "product=" + product +
                ", count=" + count +
                '}';
    }

    public Product getProduct() {
        return product;
    }

    public float getTotalPrice() {
        return this.product.getPrice() * count;
    }

    public void setProduct(Product product) {
        this.product = product;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public ProductItem(Product product, int count) {
        this.product = product;
        this.count = count;
    }

    public ProductItem() {
    }
}      

三、购物车类

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Set;

public class ShopTest {
    private LinkedHashMap<Integer, ProductItem> lmp = new LinkedHashMap<>();

    public static void main(String[] args) {
        Product p1 = new Product(1, "ThinkPad", "笔记本电脑", 7000, "c://img1");
        Product p2 = new Product(2, "MacPro", "笔记本电脑", 10000, "c://img2");
        Product p3 = new Product(3, "Hp", "笔记本电脑", 5000, "c://img3");

        ShopTest st = new ShopTest();

        st.addProduct(p2, 2);
        st.addProduct(p1, 30);
        st.addProduct(p3, 10);
        st.showAll();

        st.modifyProduct(p1, 31);
        st.showAll();

        st.delProduct(p1);
        st.showAll();

        st.clearProduct();
        st.showAll();
    }

    public void addProduct(Product product, int num) {
        ProductItem proItem = new ProductItem(product, num);
        lmp.put(product.getProductId(), proItem);
    }

    public void showAll() {
        Iterator<Integer> it = lmp.keySet().iterator();
        while (it.hasNext()) {
            Integer next = it.next();
            ProductItem item = lmp.get(next);
            Product pro = item.getProduct();
            System.out.println("名称:" + pro.getProductName() + " 单价:"
                    + pro.getPrice() + " 数量:" + item.getCount() + " 小计:"
                    + item.getTotalPrice());
        }
        System.out.println("总计:" + getTotalPrice());
    }

    public float getTotalPrice() {
        Set<Integer> id = lmp.keySet();
        float sum = 0;
        for (Integer i :
                id) {
            sum += lmp.get(i).getTotalPrice();
        }
        return sum;
    }

    public void modifyProduct(Product product, int count) {
        if (lmp.containsKey(product.getProductId())) {
            ProductItem item = lmp.get(product.getProductId());
            item.setCount(count);
            System.out.println("修改成功!");
        } else {
            System.out.println("不存在该商品!!");
        }
    }

    public void delProduct(Product product) {
        if (lmp.containsKey(product.getProductId())) {
            lmp.remove(product.getProductId());
            System.out.println("成功移除" + product.getProductName() + "商品");
        } else {
            System.out.println("抱歉, 无该商品, 删除失败");
        }
    }

    public void clearProduct() {
        lmp.clear();
        System.out.println("购物车已经清空!");
    }
}      

四、运行结果