在Guava的帮助下使用另一个Map转换Map

时间:2014-07-22 11:00:28

标签: java guava

我有两张地图,我想使用第二张地图转换第一张地图值。

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的值应与第二张地图中的值相乘。第一张地图是第一张地图的子集。

感谢。

1 个答案:

答案 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);
}