1.创建Scanner对象2创建Map集合对象3.循环将商品加入购物车4.在循环中根据输入的店铺名称和商品名称,封装成Product对象

这段代码演示了如何创建一个`Product`类,包含店铺和商品名称属性,并实现了`equals`和`hashCode`方法。接着,通过`Scanner`读取用户输入,创建一个`HashMap`作为购物车,根据店铺和商品名称添加商品并计算数量。当遇到重复商品时,数量会增加。最后遍历购物车并打印每个商品及其数量。
摘要由CSDN通过智能技术生成
1.定义一个商品类(Product),包括两个属性:store(店铺名称),name(商品名称),提供对应的构造以及get/set方法,还有重写 hashCode和equals方法
2.定义测试类
2.1.创建Scanner对象
2.2.创建Map集合对象
2.3.循环将商品加入购物车
2.4.在循环中根据输入的店铺名称和商品名称,封装成Product对象
2.5.如果集合中不包含我们添加的同一个店铺同一个商品的话,直接往集合中添加该商品
2.6.否则将该商品对应的值(数量)从集合中获取出来,让其加1
2.7.将加1之后的商品重新添加到集合中
2.8.遍历集合*/
 //键盘录入
        Scanner sc = new Scanner(System.in);
        //创建map集合
        Map<Product,Integer> map =  new HashMap<>();

        //当输入"over"时结束循环
        while (true) {
            System.out.println("请输入店铺名称");
            String store = sc.next();
            if("over".equals(store)){
                break;
            }
            System.out.println("请输入商品名称");
            String name = sc.next();
            //封装成对象
            Product p = new Product(store,name);
            //如果map集合中包含这个商品对象,取出来然后加1
            if (map.containsKey(p)){
                Integer count = map.get(p);
                map.put(p,count+1);
            }else{
                //如果不包含,直接存入集合中,让其为1;
                map.put(p,1);
            }
        }
        //遍历map集合
        Set<Map.Entry<Product, Integer>> entries = map.entrySet();
        for (Map.Entry<Product, Integer> entry : entries) {
            //获取所有的键
            Product key = entry.getKey();
            //获取所有的键值
            Integer value = entry.getValue();
            //打印
            System.out.println(key+"="+value);
        }

    }
}

//商品类
 

public class Product {
    private String store;//店铺名称
    private String name;//商品名称

    public Product() {
    }

    public Product(String store, String name) {
        this.store = store;
        this.name = name;
    }

    public String getStore() {
        return store;
    }

    public void setStore(String store) {
        this.store = store;
    }

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "Product{" +
                "store='" + store + '\'' +
                ", name='" + name + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Product product = (Product) o;
        return Objects.equals(store, product.store) && Objects.equals(name, product.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(store, name);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值