1

マップの内容 (キー値) が別のマップに存在するかどうかを確認し、マップから削除する必要がある小さなコード スニペットを記述する必要があります。

例えば

マップ1:

1=>obj1
2=>obj21
3=>obj3 
4=>obj4

その他のマップ Map2:

10=>obj10
20=>obj20
2=>obj2
30=>obj30
3=>obj3

実行後の fun (Map1, Map2) の結果は、次の出力になります。

マップ2:

10=>obj10
2=>obj2
20=>obj20
30=>obj30 

小さいマップを反復処理してコンテンツ (キー、値) をチェックすることは、小さいマップを反復処理し、より大きなマップでキーとコンテンツをチェックすることが最も効率的な方法です。

4

4 に答える 4

2
m1.entrySet().removeAll(m2.entrySet());

ここで、m1 は変更するマップ、m2 は m1 から削除する必要があるマッピングを含むマップです。

于 2009-05-07T08:23:34.970 に答える
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);
}
于 2009-05-07T08:36:33.283 に答える
0

java.util.Collectionを参照してください

boolean removeAll(Collection<?> c)
于 2009-05-07T08:09:35.843 に答える
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);
    }
}
于 2009-08-13T04:50:49.353 に答える