【问题标题】:How to return a value from a Map with a method?如何使用方法从 Map 返回值?
【发布时间】:2012-04-07 23:35:52
【问题描述】:

在这种情况下如何返回 int 值?

import java.util.*;

    public class ShoppingCart {

    private Map<String, Purchase> shoppingCart = new HashMap<String, Purchase>();

    public void add (String product, int price) {
        Purchase purchase = new Purchase(product, 1, price);
        shoppingCart.put(product, purchase);
    }

    public int totalPrice() {
        //How do I accomplish this? I want to return all the prices summed together

        }
    }  
}

购买方法的构造函数是:

 public Purchase(String product, int amount, int price) {

【问题讨论】:

  • 不太明白这个问题。您需要使用的方法或相同的算法吗?
  • 这是家庭作业吗?如果是这样,请将其标记为 - 否则人们可能会为您完成所有工作。 ;)
  • 感谢大家的帮助,现在知道了。之前尝试过类似的东西,明白了原理,但是不太明白。

标签: java map


【解决方案1】:

您需要遍历地图值和总价

例如,此代码将起作用。

 public int totalPrice() {
      int sum = 0;
       for(Purchase p:shoppingCart.values()){
            sum+=p.getPrice();
       }
       return sum;
  } 

【讨论】:

    【解决方案2】:

    您遍历 Map (Javadoc) 中的值。由于这很可能是家庭作业,我会让你弄清楚其余的。

    【讨论】:

      【解决方案3】:

      Iterate through map 和每次购买的总价格

      【讨论】:

        【解决方案4】:
        public int totalPrice() {
            int i = 0;
            for(Purchase purchase : shoppingCart.values()) {
              i += purchase.getPrice();
            }
            return i;
        }
        

        【讨论】:

          【解决方案5】:
             Map<String, Purchase>  map = new HashMap<String, Purchase> ();
          
              for(String value : map.values()) {
          
              }
          

          【讨论】:

            【解决方案6】:

            在下面的代码中,您不需要再次运行 for 循环...
            导入 java.util.*;

                public class ShoppingCart {
            
                private int sum = 0;    
            
                private Map<String, Purchase> shoppingCart = new HashMap<String, Purchase>();
            
                public void add (String product, int price) {
                    Purchase purchase = new Purchase(product, 1, price);
                    if(!shoppingCart.contains(product)){
                         shoppingCart.put(product, purchase);
                         sum += price;
                    }
                }
            
                public int totalPrice() {
                    return price;
                    }
                }  
            }
            

            【讨论】:

            • 在map中,key必须是唯一的。如果你在hashmap中第二次添加产品,它会用新值覆盖现有值。我已经更新了代码,如果hashmap中已经添加了任何产品,它将不会第二次添加
            • 确实,您将覆盖价格金额并将新价格添加到总和中,但您不会删除旧价格。编辑:我也不认为这是一个好的设计。如果不允许调用者两次添加相同的产品,我会抛出异常。现在的情况是,代码假装添加调用成功,而实际上什么也没发生。
            • 如果已经在hashmap中添加了任何产品,则不会再次添加到hashmap中,价格也不会添加到总和中。我放了!在if条件下..
            猜你喜欢
            • 2019-03-25
            • 1970-01-01
            • 2014-10-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-05
            相关资源
            最近更新 更多