Java 如何从hashmap中获取计数?

Java 如何从hashmap中获取计数?,java,hashmap,Java,Hashmap,我有一个关于hashmap的问题, 我有一类产品: public class product{ private String libele; 也是一类特殊产品: public class SpecialProd extends Product{ private HashMap<Product, Price> comp = new HashMap<Product, Price>(); public HashMap<Prod

我有一个关于hashmap的问题, 我有一类产品:

public class product{
    private String libele;
也是一类特殊产品:

public class SpecialProd extends Product{   
       private HashMap<Product, Price> comp = new HashMap<Product, Price>();
        public HashMap<Product, Price> getComp() {
            return comp;
        }
}
公共类SpecialProd扩展产品{
私有HashMap comp=新HashMap();
公共HashMap getComp(){
返回补偿;
}
}
问题是,我需要知道我有多少产品库存,产品总量以及每种产品的数量: 所以我在类存储中使用了以下代码:

public class Storage{

   private  HashMap<Product, Price> port = new HashMap<Product, Price>();
public void total (){
        int nombre=0;
        int total = 0;
        int i=0;
        for (Product p:port.keySet()){
            if (port.containsKey(a)){
               // ++nombre; 
            }


        total = port.size();
        System.out.println(+nombre+ "of" +a.getLibele());
        }

        System.out.println("total products:" +total);


}


  // this is an intern class
  static class Part{
        private int price;

        public Price(int price) {
            this.price= price;
        }



        public int getprice() {
            return price;
        }

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


                }




   }
公共类存储{
私有HashMap端口=新HashMap();
公众假期总数(){
int nombre=0;
int-total=0;
int i=0;
对于(产品p:port.keySet()){
if(集装箱码头(a)){
//++nombre;
}
总计=端口大小();
System.out.println(+nombre+”of“+a.getLibele());
}
System.out.println(“总产品:+总产品”);
}
//这是一个实习班
静态类部件{
私人int价格;
公共价格(国际价格){
这个。价格=价格;
}
public int getprice(){
退货价格;
}
公共无效设置价格(整数价格){
这个。价格=价格;
}
}
}
我无法计算每种产品的数量和总价格


有什么想法吗?

您可以尝试枚举HashMap并获得所需的值

 int count=0;
 for(p : port.keySet()){
 count ++;
 price = price + port.get(a);
 }

这可能是因为你没有做任何事情来获取任何价格,或者一开始就填充了它。您只需要获取哈希表中的键数。除此之外,代码将不会运行,您的一些变量从未定义过(例如:
a
)。getPrice的方法不会做同样的事情?我不能使用port.keyset(),因为这些键是产品。然后,您可以尝试
while(port.containsKey()){//value evaluation}
public void prix(){int count=0;int Price=0;while(port.containsKey(Price)){co++;Price=Price+port.get(Price);}对于存储中的参数类型int,运算符+未定义。Price否,我在那里提到了错误:对于存储中的参数类型int,运算符+未定义。Price那么您必须使用某个整数/浮点(任何数字)数据类型来存储Price类中的价格值。请使用Price.\u val\uu。