2015-07-05 110 views
1

的所有值我有以下簽名的Java:比較嵌套HashMap的

Map<Key1, Map<Key2, List<Double>>> 

我需要添加跨內部嵌套地圖的所有鍵列表上的同一指標的HashMap中。我似乎無法找到任何有效的方法,因爲我不會事先知道列表的大小。直到現在,最好的辦法是將所有內部列表轉換爲數組列表,然後使用迭代器添加。有沒有更有效的方法來做到這一點?

+0

「在內部嵌套地圖的所有按鍵上的列表中添加相同的索引」 - 您是用相同的值填充最裏面的列表嗎?你能舉個例子嗎?這有點不清楚。 – Makoto

+0

這些值可能不同,但需要添加相同索引處的值。例如,對於Map >,Map >'我必須添加0.1和0.3。希望這件事清理一下。 – learningTheRopes

+0

@learningTheRopes你的問題不清楚。請在問題關閉前發佈一些示例輸入和輸出。 – CKing

回答

0
Double sumOfSameIndex =0.0;  

Map<Key1, Map<Key2, List<Double>>> map = new LinkedHashMap<Key1, Map<Key2, List<Double>>>(); 
Iterator<Map.Entry<Key1, Map<Key2, List<Double>>>> outerIterator = map.entrySet().iterator(); 


     while(outerIterator.hasNext()){ 

     Map.Entry<Key1, Map<Key2, List<Double>>> entryForOuterMap= outerIterator.next(); 
     Iterator<Map.Entry<Key2, List<Double>>> innerIterator = entryForOuterMap.getValue().entrySet().iterator(); 

      while(innerIterator.hasNext()){ 

       Map.Entry<Key2, List<Double>> entryForInnerMap = innerIterator.next(); 

      // entryForInnerMap.getValue() returns List<Double> 
      List<Double> getList= entryForInnerMap.getValue(); 

       // REPLACE THIS x WITH the INDEX OF ARRAY YOU WANT TO SUM 
       sumOfSameIndex = sumOfSameIndex + getList.get (x); 

      } 
    }