有两个Map<Integer,Integer> ,key是渠道号,value是统计数
我想将两个map中的key(也就是渠道号)相同的统计数分别相加,最后保存在一个Map<Integer,Integer>里。这是我工作的一个实际的问题,弄了半天没解决,哪位高手指点一下,谢谢了啊。
我想将两个map中的key(也就是渠道号)相同的统计数分别相加,最后保存在一个Map<Integer,Integer>里。这是我工作的一个实际的问题,弄了半天没解决,哪位高手指点一下,谢谢了啊。
map.put(new Integer(0), new Integer(100));
map.put(new Integer(1), new Integer(101));
map.put(new Integer(2), new Integer(102));
Map<Integer, Integer> amap=new HashMap<Integer, Integer>();
amap.put(new Integer(0), new Integer(200));
amap.put(new Integer(5), new Integer(300));
Set<Integer> set=map.keySet();
Iterator<Integer> it=set.iterator();
while(it.hasNext()){
Integer tem=it.next();
if(amap.containsKey(tem)){
amap.put(tem, new Integer(amap.get(tem).intValue()+map.get(tem).intValue()));
}
}
map.putAll(amap);
System.out.println(map);
打印结果:
{2=102, 1=101, 5=300, 0=300}
看一下,0=300 其于的没变,也合到一起了(注:我用了泛型,JDK1.5以上支持,不知道你的JDK版本)
public class Test {
public static void main(String[] args) {
Map<Integer,Integer> map1 = new HashMap<Integer,Integer>();
map1.put(new Integer(1), new Integer(3));
map1.put(new Integer(3), new Integer(3));
map1.put(new Integer(5), new Integer(3));
Map<Integer,Integer> map2 = new HashMap<Integer,Integer>();
map2.put(new Integer(4), new Integer(3));
map2.put(new Integer(5), new Integer(3));
map2.put(new Integer(9), new Integer(3));
for(Integer key1 : map1.keySet()){
System.out.println(key1);
for(Integer key2 : map2.keySet()){
System.out.println(key2);
if(key1.intValue() == key2.intValue()){
map1.put(key1, map1.get(key1)+map2.get(key2));
map2.remove(key2);
}
}
}
map1.putAll(map2);
for(Integer key1 : map1.keySet()){
System.out.println(key1 +" : "+map1.get(key1));
}
}
}
public class Test {
public static void main(String[] args) {
Map<Integer,Integer> map1 = new HashMap<Integer,Integer>();
map1.put(new Integer(1), new Integer(3));
map1.put(new Integer(3), new Integer(3));
map1.put(new Integer(5), new Integer(3));
Map<Integer,Integer> map2 = new HashMap<Integer,Integer>();
map2.put(new Integer(4), new Integer(3));
map2.put(new Integer(5), new Integer(3));
map2.put(new Integer(9), new Integer(3));
for(Integer key1 : map1.keySet()){
if(map2.containsKey(key1)){
map1.put(key1, map1.get(key1)+map2.get(key1));
map2.remove(key1);
}
}
map1.putAll(map2);
for(Integer key1 : map1.keySet()){
System.out.println(key1 +" : "+map1.get(key1));
}
}
}