2015-11-28 2 views
-2

Есть ли способ установить аккумулятор на 0 после каждого использования, а после этого он выполняет ту же функцию? или Как рассчитать общее значение для каждого ключа на карте, например: String, Hashmap String, Integer? Я стараюсь быть настолько проясняющим, насколько могу, но у меня нет к этому понятия.Как вычислить значение для каждой клавиши HashMap?

/*EXAMPLE OF HASHMAP: String e.g - UK ; America ; Africa , etc. String e.g - black , white, asian Integer e.g- 2008 , 103432 , 2391 // for every country the values are diff 
*/ 
//one way to think of this is maybe with accumulator 
// THIS IS AN EXAMPLE CODE WHICH DOES NOTHING. 
int acc = 0 ; 
for (int i = 0 ; i < 20 ; i++) { 
if (i == 1) { 
acc++; }  // after acC++ and it is 1, I want it to be again 0; 
if (i == 3) { 
acc++; }  // so that on this stage it will be 1 
} 

//Another alternative way may be: 
Map<String,HashMap<String,Integer>> question = new HashMap<>(); 
int count = 0 ; 
for(String regions : question.keySet()) 
{ 
for (String people : question.get(regions).keySet()) 
{ 
count = count + question.get(regions).get(people); // and here it will count all the value but I want to count it for each region and then become to 0 again, so that I can have the overall value for each of the people(keys) 
} 
} 
+0

... не получить то, что вы имеете в виду. Вы можете просто «acc = 0» после любой функции, которую вы выполняете с ней? Просьба уточнить ваш запрос. И вы уверены, что не хотите включать второй «if» в свой цикл? Cos в вашем текущем коде не включен. И цикл не имеет смысла. Возможно, если бы вы могли указать, что вы пытаетесь выполнить, и проблема, вы можете получить лучшую помощь. –

+2

Если вы хотите, чтобы действие оставалось на 0, то в чем смысл его увеличения? – Thevenin

+0

вы забыли открыть {скобка для цикла и закрывающего кронштейна}, следовательно, я вышел из сферы действия – Raf

ответ

0

Ваш вопрос немного неясен, но вот пример, который вычисляет значения для ключа в hashmap. Давайте предположим, что мы имеем

US -> [X -> 55, Y -> 5 , Z -> 10, ...] as one object 
UK -> [X -> 99, Y -> 1, Z -> 50, W-> 23, ...] as other object 

где X, Y и Z имеют тип String, и их значения типа Integer. Следующий код хранит указанную выше структуру, а затем вычисляет X, Y, Z для США и Великобритании.

//structure to store a map of key/value for a key 
Map<String, Map<String, Integer>> hashmap = new HashMap<String, Map<String, Integer>>(); 

    //key/value map 
    Map<String, Integer> US = new HashMap<String, Integer>(); 
    US.put("X", 1200); 
    US.put("Y", 50); 
    US.put("Z", 25552); 
    //can add any number, doesn't have to be three 

    Map<String, Integer> UK = new HashMap<String, Integer>(); 
    UK.put("X", 222); 
    UK.put("Y", 52); 
    UK.put("Z", 18); 

    hashmap.put("USA", US); 
    hashmap.put("UK", UK); 

    //loop through main keys (i.e. US, UK, Africa, etc.)   
    for (String key : hashmap.keySet()) { 
     Map<String, Integer> temp = hashmap.get(key); 
     System.out.println("Calculating for " + key); 
     Integer sum = 0; 
     //for each key i.e. UK loop through its properties 
     for(String otherKey: temp.keySet()) { 
      sum = sum + temp.get(otherKey); 
     } 
     System.out.println("Sum for " + key + " is " + sum); 
    } 

выход:

Calculating for USA 
Sum for USA is 26802 
Calculating for UK 
Sum for UK is 292 
+0

Я знаю, что мой вопрос немного неясен, так как я не знаю эта итерация и расчет в целом. Вы проделали отличную работу, прямолинейный ответ! Большое спасибо! –

Смежные вопросы