HashMap案例_商品统计

给定商品ID,商品名称Name,商品价格Price,商品数量Number,统计每个商品下的ID。

结果如下:

显示器  -->>  1  4
鼠标  -->>  3
主机  -->>  5
键盘  -->>  2  6

先创建商品类,代码如下

public class Product {
    private String productId;
    private String productName;
    private float price;
    private int number;
    
//    无参构造方法
    public Product() {  
    }
    
//    有参构造方法
    public Product(String productId, String ProductName, float price, int number) {
        this.productId = productId;
        this.productName = ProductName;
        this.price = price;
        this.number= number;
    }
    
    public String getProductId() {
        return productId;
    }
public String getProductName() {
        return productName;
    }
public float getPrice() {
        return price;
    }
public int getNumber() {
        return number;
    }

下面代码进行商品统计:

import java.util.HashMap;

public class testProductCount {
    public static void main(String[] args) {
        
//        构造几个Product对象,放入一个hashMap中
        Product p1 = new Product("1", "显示器", 20, 2);
        Product p2 = new Product("2", "键盘",   10, 2);
        Product p3 = new Product("3", "鼠标",  120, 2);
        Product p4 = new Product("4", "显示器", 20, 2);
        Product p5 = new Product("5", "主机",  120, 2);
        Product p6 = new Product("6", "键盘",  120, 2);
        
//        构造一个HashMap,并放入数据,key是productId,value是Product对象
        HashMap<String, Product> pdtMap = new HashMap<String, Product>();
        pdtMap.put(p1.getProductId(), p1);
        pdtMap.put(p2.getProductId(), p2);
        pdtMap.put(p3.getProductId(), p3);
        pdtMap.put(p4.getProductId(), p4);
        pdtMap.put(p5.getProductId(), p5);
        pdtMap.put(p6.getProductId(), p6);
        
//        找出hashmap中产品名称重复的数据,并打印出发生了重复的数据产品id:如 显示器  -->> 1,4//        思路:new一个HashMap,newMap遍历pdtMap中所有Product,判断name是否在newMap中,如果存在,newMap的value+1,
//        如果name不在newMap中,则说明是新加入元素,newMap.put(name,1)
        
        HashMap<String, String> newMap = new HashMap<String, String>();
        
        //    遍历
        for(String str: pdtMap.keySet()) {
//            取出pdtMap中的name
            String name = pdtMap.get(str).getProductName();
            if(newMap.containsKey(name)) {
                newMap.put(name,newMap.get(name)+"  "+str);
            }else {
                newMap.put(name,str);
            }
        }
        
        //    打印newMap的结果,,格式如 显示器 -->> 1,4
        for(String str: newMap.keySet()) {
            System.out.println(str+"  -->>  "+ newMap.get(str));
        }
        
    }

}

猜你喜欢

转载自www.cnblogs.com/lucas-zhao/p/11878898.html