如何在HashMap中添加所有值?

时间:2018-02-20 16:20:57

标签: java hashmap

我有一个作业,我必须制作杂货库存的价格。然后,我必须制作一个方法,其中存在包含这些物品的购物车,我必须找到总价。

这是商品HashMap的片段,包含商品和价格:

HashMap<String, Double>stock= new HashMap<String, Double>(); 
stock.put("eggs",1.79);
stock.put("orange juice",2.5); 


public static double price(HashMap<String, Double>stock){

    HashMap<String, Integer>cart = new HashMap<String, Integer>();
    cart.put("eggs", 2);
    cart.put("orange juice", 2);
}

这是我的购物车,其中int表示购物车中每件商品的数量。我对HashMaps很新,我对如何将股票地图引用到价格方法并将其正确添加感到困惑。理论上,最终的答案是2个鸡蛋和2个橙汁盒的价格。并非常感谢帮助

4 个答案:

答案 0 :(得分:1)

循环购物车条目,转换为订单项价格,然后求和。

您可以使用此流:

double total = cart.entrySet().stream()
    .mapToDouble(entry -> entry.getValue() * stock.get(entry.getKey()))
    .sum();

答案 1 :(得分:0)

试试这个

public static double price(HashMap<String, Double> stock){


    HashMap<String, Integer> cart = new HashMap<String, Integer>();
    cart.put("eggs", 2);
    cart.put("orange juice", 2);
    // the cart hashmap now contains all the items in our shopping cart

    // we want to get the prices of all items in our cart, and multiple by the amount we are purchasing
    double cost = 0;
    for (String item: cart.keySet()) { // for every item we are purchasing
        double amount = cart.get(item); // how much we are purchasing
        double price = stock.get(item); // how much it costs
        cost += amount * price; // update the total price
    }
    return cost;
}

答案 2 :(得分:0)

初学者,这段代码可能有所帮助。这是一种精心制作/详细的做事方式:

A<0>, ..., A<512>

答案 3 :(得分:0)

上面的人已经给你提供了代码片段,但我会根据Chris Bertasi的回答详细介绍一下,因为你是Hashmaps的新手,所以最容易阅读。

HashMap<String, Double>stock= new HashMap<String, Double>(); 
stock.put("eggs",1.79);
stock.put("orange juice",2.5); 

这个代码片段的作用是创建一个Hashmap,您可以将其视为与具有两列的关系数据库类似。列是键和值。

我们附加的第一件事("eggs")是我们用来查找它所附加的内容的密钥(1.79)然后同样的东西给OJ。导致Hashmap看起来像这样。

Item (Key)    | Price (Value)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
egg           | 1.79
orange juice | 2.5

因此,为了获得鸡蛋的价格,您只需使用stock.get("egg")询问Hashmap,它就会返回值1.79

同样的逻辑应用于购物车,其数量而不是价格(例如返回2而不是1.79)。

因此,一旦我们将商品添加到购物车中,我们就会迭代它并获得总费用。

要迭代我们的库存,我们可以使用:

for (String item: cart.keySet())

这将通过密钥集(即密钥列)查看,并及时获取密钥,并将其设置为项目变量。

利用这些知识,我们可以通过股票和&amp;购物车以获取每件商品的价格和用户购买的金额。

double amount = cart.get(item); 
double price = stock.get(item); 

使用此信息,我们可以使用以下方式生成总费用:

totalCost += amount * price;

将这些拼凑在一起为我们提供了这个片段,我们遍历每个关键元素并通过.get()方法检索价格和数量

double totalCost = 0;
for (String item: cart.keySet()) {
    double amount = cart.get(item);
    double price = stock.get(item);
    totalCost += amount * price; 
}
return totalCost;