Map<String, String> mapA = new HashMap<String, String>(); Map<String, String> mapB = new HashMap<String, String>(); Map<String, String> mapAdd = new HashMap<String, String>(mapB); Map<String, String> mapDel = new HashMap<String, String>(); Map<String, String> mapChange = new HashMap<String, String>(); Map<String, String> mapUnChange = new HashMap<String, String>(); Iterator<String> it = mapA.keySet().iterator(); while(it.hasNext()) { String key = it.next(); String val = mapA.get(key); if(mapB.containsKey(key)) { String bVal = mapB.get(key); if(val != null && val.equals(bVal) || val == bVal) { mapUnChange.put(key, val); } else { mapChange.put(key, val); } mapAdd.remove(key); } else { mapDel.put(key, val); } } }
如果是判断key有没有变动,可以用集合的交并差试试看 for example//假设map1是旧,map2是新,假设Map的泛型是Map<XX,YY> int flag = 0; for (XX xx : map1.keySet().removeAll(map1.keySet())) { System.out.println("新增了key:" + xx); flag = 1; } for (XX xx : map1.keySet().removeAll(map2.keySet())) { System.out.println("删除了key:" + xx); flag = 2; } if (flag == 0) { System.out.println("key没有变动"); }如果key和value都要判断,就用循环 for(Map.EntrySet<XX,YY> e : map1.entrySet()) { if (map2.containsKey(e.getKey())) { if (!map2.get(e.getKey()).equals(e.getValue())) { System.out.println("修改了key:" + e.getKey()); } } else { System.out.println("删除了key:" + e.getKey()); } } for (XX xx : map2.keySet().removeAll(map1.keySet())) { System.out.println("新增了key:" + e.getKey()); }
boolean containsKey(Object key)
boolean containsValue(Object value)
遍历取出原来的map 中的key,value然后用下面的方法比较
Map<String, String> mapA = new HashMap<String, String>();
Map<String, String> mapB = new HashMap<String, String>();
Map<String, String> mapAdd = new HashMap<String, String>(mapB);
Map<String, String> mapDel = new HashMap<String, String>();
Map<String, String> mapChange = new HashMap<String, String>();
Map<String, String> mapUnChange = new HashMap<String, String>(); Iterator<String> it = mapA.keySet().iterator(); while(it.hasNext()) {
String key = it.next();
String val = mapA.get(key); if(mapB.containsKey(key)) {
String bVal = mapB.get(key); if(val != null && val.equals(bVal) || val == bVal) {
mapUnChange.put(key, val);
}
else {
mapChange.put(key, val);
} mapAdd.remove(key);
}
else {
mapDel.put(key, val);
}
}
}
如果是判断key有没有变动,可以用集合的交并差试试看
for example//假设map1是旧,map2是新,假设Map的泛型是Map<XX,YY>
int flag = 0;
for (XX xx : map1.keySet().removeAll(map1.keySet())) {
System.out.println("新增了key:" + xx);
flag = 1;
}
for (XX xx : map1.keySet().removeAll(map2.keySet())) {
System.out.println("删除了key:" + xx);
flag = 2;
}
if (flag == 0) {
System.out.println("key没有变动");
}如果key和value都要判断,就用循环
for(Map.EntrySet<XX,YY> e : map1.entrySet()) {
if (map2.containsKey(e.getKey())) {
if (!map2.get(e.getKey()).equals(e.getValue())) {
System.out.println("修改了key:" + e.getKey());
}
} else {
System.out.println("删除了key:" + e.getKey());
}
}
for (XX xx : map2.keySet().removeAll(map1.keySet())) {
System.out.println("新增了key:" + e.getKey());
}
if (map2.get(e.getKey())==null && e.getValue()==null) {} else if (map2.get(e.getKey()) == null || e.getValue() == null ||
!map2.get(e.getKey()).equals(e.getValue())) {
System.out.println("修改了key:" + e.getKey());
}