2017-01-24 2 views
0

Я читаю файл ввода:Как суммировать значения в Java Hashmap

Tuesday 50.40000000000001 
Friday 35.5 
Wednesday 51.5 
Friday 46.49999999999999 
Thursday 47.89999999999999 
Friday 42.60000000000001 
Tuesday 48.900000000000006 
Thursday 47.300000000000026 
Thursday 50.90000000000001 
Wednesday 52.1 
Monday 52.50000000000001 
Thursday 53.1 
Tuesday 49.000000000000014 
Monday 36.900000000000006 
Wednesday 46.70000000000001 
Thursday 51.30000000000002 
Monday 49.99999999999998 

Я хочу, чтобы фильтровать каждый день и суммировать все свои ценности - то есть добавить все значения в понедельник, затем по вторникам и так далее. Как я могу сделать это на Java. Я попытался использовать hashmap с кодом ниже, но я не смог это сделать. Мне нужна помощь, пожалуйста.

public static void main(String[] args) throws NumberFormatException, IOException 
    { 
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("weekly.txt"))); 
    String line; 
     while ((line = br.readLine()) != null) { 

      String splittedWord []= line.split("\\s+"); 
      String key = splittedWord[0]; 

      map.put(key, new ArrayList<Double>()); 

      for(int i=1;i<splittedWord.length;i++){ 
       double temp = Double.parseDouble(splittedWord[i]);  
       if(map.containsKey(key)){ 
        map.get(key).add(temp); // adding keys and values to the encode hashmap O(n) 
       } 

      } 
     } 
     System.out.println("The size of encodeMap is " + map.size()); 

     Iterator test = map.entrySet().iterator(); 
      while (test.hasNext()) { 
       Map.Entry pair = (Map.Entry)test.next(); 
       System.out.println(pair.getKey() + " " + pair.getValue()); 

       test.remove(); // avoids a ConcurrentModificationException    
      }   
    } 
+0

где ваша карта определяется? Что это такое? –

+0

private static HashMap > map = new HashMap >(); Это наверху. –

+0

Я бы поменял его на 'HashMap ', а затем 'if (! Map.containsKey (key)) {map.put (key, temp);} else {map.get (key) + temp} ' –

ответ

0

Если у вас есть требование, чтобы хранить все значения для каждого дня, изменить свой код следующим образом:

private static HashMap<String, Double> map = new HashMap<String, Double>(); 

    if(!map.containsKey(key)) { 
     map.put(key, temp); 
    } else { 
     map.put(key, map.get(key) + temp); 
    } 
+0

Спасибо, ребята. Это сработало. Я так ценю. –

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