2014-07-22 27 views
0

我有兩個地圖,我想使用第二個地圖變換第一個地圖值。在番石榴的幫助下使用另一個地圖變換地圖

Map<T, Double> firstMap = Maps.newHashMap(with some value...); 
Map<T, Double> secondMap = Maps.newHashMap(with some value...); 

Map<T, Double> finalMap = Maps.newHashMap(); 
for(Entry<T, Double> entry : firstMap.entrySet()) 
{ 
    finalMap.put(entry.getKey(), entry.getValue() * secondMap.get(entry.getKey())); 
} 

我想按照以下方式轉換第一張地圖。

第一張圖中元素T的值應該與第二張圖中的值相乘。第一張地圖是第一張地圖的子集。

謝謝。

+0

請詢問具體的問題。告訴我們你的代碼並告訴我們你有什麼問題。 – Seelenvirtuose

+0

請在上面找到代碼來解釋問題。 – user3222372

+0

您仍然不會告訴我們問題是什麼。運行上述代碼時,您的輸入,預期輸出和實際輸出是什麼? –

回答

1

使用番石榴:

public static final void main(final String... args) { 

    final Map<String, Integer> map1 = ImmutableMap.of("key0", 2, "key1", 3); 

    final Map<String, Integer> map2 = ImmutableMap.of("key0", 2, "key1", 3, "key2", 3); 

    final Map<String, Integer> transformed = Maps.transformEntries(map1, 
      new EntryTransformer<String, Integer, Integer>() { 

       @Override 
       public Integer transformEntry(final String key, final Integer value) { 

        return map2.get(key) * value; 
       } 
      }); 

    //result {key0=4, key1=9} 
    System.out.println(transformed); 
}