如何在java中接收地图的差异?

2022-09-02 04:58:23

我有两张地图:

Map<String, Object> map1;
Map<String, Object> map2;

我需要接收这些地图之间的差异。是否存在可能是apache utils如何接收这种差异?现在似乎需要获取每个映射的条目集,并找到 diff1 = set1 - set2 和 diff2 = set2- set1。创建摘要映射后 = diff1 + diff2 看起来非常尴尬。是否存在另一种方式?谢谢。


答案 1

谷歌番石榴怎么样?

Maps.difference(map1,map2)

答案 2

这是一个简单的片段,你可以用它来代替大量的番石榴库:

public static <K, V> Map<K, V> mapDifference(Map<? extends K, ? extends V> left, Map<? extends K, ? extends V> right) {
    Map<K, V> difference = new HashMap<>();
    difference.putAll(left);
    difference.putAll(right);
    difference.entrySet().removeAll(right.entrySet());
    return difference;
}

查看整个工作示例