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); } }