我有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");
请问怎么写下面的代码呢?谢谢大家!!!
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");
请问怎么写下面的代码呢?谢谢大家!!!
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
}
}
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次了,怎么回事?
syso(key_a + " , " + value_a);
break;
} 加个break就好了。
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());
}
}
}