我需要编写一小段代码,我需要检查地图的内容(键值),如果它存在于另一个地图中,则将其从地图中删除
E.g
Map1:
1=>obj1
2=>obj21
3=>obj3
4=>obj4
其他地图 MAP2:
10=>obj10
20=>obj20
2=>obj2
30=>obj30
3=>obj3
乐趣的结果(Map1,Map2) 执行后,它具有以下输出
地图2:
10=>obj10
2=>obj2
20=>obj20
30=>obj30
迭代较小的地图并检查内容(键,值)是在较小的地图上迭代,并检查较大地图中的关键和内容是最有效的方法。
答案 0 :(得分:2)
m1.entrySet().removeAll(m2.entrySet());
其中m1是要修改的Map,m2是需要从m1中删除的映射的映射。
答案 1 :(得分:1)
private static <K, V> void fun(Map<K, V> a, Map<K, V> b) {
Map<K, V> shortestMap = a.size() < b.size() ? a : b;
Map<K, V> longestMap = a.size() > b.size() ? a : b;
Set<Entry<K, V>> shortestMapEntries = shortestMap.entrySet();
Set<Entry<K, V>> longestMapEntries = longestMap.entrySet();
longestMapEntries.removeAll(shortestMapEntries);
}
答案 2 :(得分:0)
boolean removeAll(Collection<?> c)
答案 3 :(得分:0)
private static <K, V> removeDuplicates(Map<K, V> map1, Map<K, V> map2) {
for (K key : map1.keySet()) {
V val1 = map1.get(key);
V val2 = map2.get(key);
if (val2 != null && val2.equals(val1)
map2.remove(key);
}
}