我有2个map.
Map a = new Map();
map_a.put("a","1");
map_a.put("b","2");
map_a.put("c","3");
map_a.put("d","4");Map b = new Map();
map_b.put("a", "1");
map_b.put("b","11");现在我要将这2个map进行比较,如果map_a的key和map_b 的key相同,再看值是否相同,如果值不同,则保存map_a中的value。
所以,当前要保存下来的是("b","2");(Object obj_a : map_a.keySet().toArray()) {
     String  key_a = String.valueOf(obj_a); 
     String  value_a = String.valueOf(map_a.get(obj_a));
     for(Object obj_b : map_b.keySet().toArray()) {
          String key_b = String.valueOf(obj_b);
          String value_b = String.valueOf(map_b.get(obj_b));
          if(key_a.equals(key_b) && !value_a.equals(value_b)) {
               syso(key_a + " , " + value_a);
          }
     }}现在增加一个功能,就是map_b中没有key c,d.就是我还要保存在map_a中有的,map_b中没有的key, ("c","3"); ("d","4");
请问怎么写下面的代码呢?谢谢大家!!!

解决方案 »

  1.   

    用map_a的key去map_b里面get出来,如果null值的话就说明map_b里面没有的呀
      

  2.   

    (Object obj_a : map_a.keySet().toArray()) { 
        String  key_a = String.valueOf(obj_a); 
        String  value_a = String.valueOf(map_a.get(obj_a)); 
        if(map_b.get(key_a)==null) {
            保存a的key
        }
        

      

  3.   

    如果map_a的key和map_b 的key相同,再看值是否相同,如果值不同,则保存map_a中的value如果值相同呢?2个都不保存吗?如果相同则保存任意一个的话最后不就是map_a吗
      

  4.   

    (Object obj_a : map_a.keySet().toArray()) {
        String  key_a = String.valueOf(obj_a);
        String  value_a = String.valueOf(map_a.get(obj_a));
        for(Object obj_b : map_b.keySet().toArray()) {
              String key_b = String.valueOf(obj_b);
              String value_b = String.valueOf(map_b.get(obj_b));
              if(key_a.equals(key_b) && !value_a.equals(value_b)) {
                  syso(key_a + " , " + value_a);
              }          else if(map_b.get(key_a) == null ) {
                 syso(key_a + " , " + value_a);
              }    }} ------------
    这样,结果执行出来以后:
    d , 4
    d , 4
    b , 2
    c , 3
    c , 3c和d重复出现了2次了,怎么回事?
      

  5.   

    else if(map_b.get(key_a) == null ) {
                syso(key_a + " , " + value_a);
                break;
              } 加个break就好了。
      

  6.   


    public class TestMap {
    public static void main(String args[]){
    Map<String,String> a = new HashMap<String,String>(); 
    a.put("a","1"); 
    a.put("b","2"); 
    a.put("c","3"); 
    a.put("d","4");  Map<String,String> b = new HashMap<String,String>(); 
    b.put("a", "1"); 
    b.put("b","11"); 

    for(Map.Entry<String, String> entry:a.entrySet()){
    if(b.containsKey(entry.getKey())){
    for(Map.Entry<String, String> entry2:b.entrySet()){
    if(entry.getKey().equals(entry2.getKey())){
    if(!entry.getValue().equals(entry2.getValue()))
    System.out.println(entry.getKey() + "," + entry.getValue());
    }
    }
    }
    else
    System.out.println(entry.getKey() + "," + entry.getValue());
    }
    }
    }
      

  7.   

    Map是接口哦 怎么能Map a = new Map();