如何将新地图添加到现有地图。地图具有相同的类型Map<String, Integer>
。如果新地图中的密钥存在于旧地图中,则应添加值。
Map<String, Integer> oldMap = new TreeMap<>();
Map<String, Integer> newMap = new TreeMap<>();
//Data added
//Now what is the best way to iterate these maps to add the values from both?
答案 0 :(得分:5)
通过添加,我假设您要添加整数值,而不是创建Map<String, List<Integer>>
。
在java 7之前,你必须迭代@laune显示(+1给他)。否则使用java 8,Map上有一个合并方法。所以你可以这样做:
Map<String, Integer> oldMap = new TreeMap<>();
Map<String, Integer> newMap = new TreeMap<>();
oldMap.put("1", 10);
oldMap.put("2", 5);
newMap.put("1", 7);
oldMap.forEach((k, v) -> newMap.merge(k, v, (a, b) -> a + b));
System.out.println(newMap); //{1=17, 2=5}
它的作用是,对于每个键值对,它合并键(如果它还没有在newMap
中,它只是创建一个新的键值对,否则它会更新之前的值保持现有密钥通过添加两个整数)
也许你应该考虑使用Map<String, Long>
来避免在添加两个整数时溢出。
答案 1 :(得分:4)
for( Map.Entry<String,Integer> entry: newMap.entrySet() ) {
// get key and value from newMap and insert/add to oldMap
Integer oldVal = oldMap.get( entry.getKey() );
if( oldVal == null ){
oldVal = entry.getValue();
} else {
oldVal += entry.getValue();
}
newMap.put( entry.getKey(), oldVal );
}
希望这就是你的意思