JAVA:一个处理map的问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 03:15:04
MAP<String,Integer>
MAP1:(2003=1 2004=5 2006=10......)
MAP2:(2003=1 2002=2 2004=6.......)

我想将两个MAP合并,得到
MAP_RESULT(2002=2 2003=2 2004=11 2006=10)

请问如何设计算法速度最快!
朋友,可能我没说明白,String相同的 后面的int值要相加,putall 不符合我要求

Set<String>set=map2.keySet();
for(String key:set){
if(map1.containsKey(key)){
map1.put(key,map1.get(key)+map2.get(key));
}
else{
map1.put(key,map2.get(key));
}
}
//楼上的方法没把同键的值相加。我这个加了。试验了一下,10次平均时间比putAll的10次时间还少。

可以用它的自带的方法
putAll()

下面是我的测试程序
public static void main(String[] args) {
long b = System.currentTimeMillis();
Map<String, Integer> map1 = new HashMap<String, Integer>();
Map<String, Integer> map2 = new HashMap<String, Integer>();
int i = 0;
for (i = 0; i < 10000; i++) {
map1.put(String.valueOf(i), i);
}
for (; i < 20000; i++) {
map2.put(String.valueOf(i), i);
}
map1.putAll(map2);
long e = System.currentTimeMillis();
System.out.println(e-b);
}

map1一万个数据, map2一万个数据

从初始化到合并完成, 一共花了62毫秒