Умножение вложенных значений HashMap - Java - PullRequest
0 голосов
/ 25 апреля 2020

Из приведенного ниже кода можно получить яблочные груши 1,50 6

, если нет, то хотя бы 1,50 и 6? Я сделал несколько вещей для достижения этого / прочитал несколько стеков через поток, но теперь уверен, как это сделать. Заранее спасибо за ваше время / комментарии. выделенный текст

public class RandomCheck {
    public static void main(String[] args) {

        //Keep Track of Fruit, Quantity and Price per item
        Map<String, Map<Integer, Double>> mapOuter = new HashMap<String, Map<Integer, Double>>();

        //Keep Track of Quantity and Price per item
        Map<Integer, Double> mapInner = new HashMap<Integer, Double>();

        mapInner.put(2, .75);
        mapInner.put(4, 1.25);

        mapOuter.put("apple", mapInner);
        mapOuter.put("pears", mapInner);

        //ToDo: Get Final price of this purchase all together will be (2*.$75) + (4* $1.25)= $6.5
        double finalTotal = 0;
        for (Map.Entry<Integer, Double> innerData : mapInner.entrySet()) {
            finalTotal = finalTotal + (innerData.getKey() * innerData.getValue());
        }
        System.out.println("Total price " + finalTotal);

        //ToDo:Get itemized total, for Apple it will be 2* $.75 and for pears 4* $1.25
        double totalByItem = 0;
       /* for (Map.Entry<String, Map<Integer, Double>> outerData : mapOuter.entrySet()) {
            for (Map.Entry<Integer, Double> innerData : mapInner.entrySet()) {
                // System.out.println(" KEY Outer "+ outerData.getKey() + " KEY Inner " + innerData.getKey() + " Value Inner " + innerData.getValue());
                totalByItem = totalByItem + (innerData.getKey() * innerData.getValue());
            }
        }
        System.out.println("By item price " + totalByItem);*/

       /* Iterator <k> itr= map.keySet().iteraotr;
        while(itr.hasNext()){
            K key = its.next();
            V value= map.get(key);
        }*/
    }
}

1 Ответ

1 голос
/ 25 апреля 2020

Разве ваши Карты не должны иметь такую ​​структуру:

Map<String, Integer> quantity = new HashMap<>();
quantity.put("apple", 2);
quantity.put("pears", 4);

Map<String, Double> price = new HashMap<>();
price.put("apple", .75);
price.put("pears", 1.25);

Тогда вы можете сделать что-то вроде:

for(String fruit : quantity.keySet())
{
    int fruitQuantity = quantity.get(fruit);
    double fruitPrice = price.get(fruit);
    // ...
}

Кстати, общее количество груш должно быть 5, а не 6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...