1. import com.google.common.collect.MapDifference;
    2. import com.google.common.collect.Maps;
    3. import java.util.Map;
    4. public class MapUtil {
    5. /**
    6. * difference
    7. * Maps.difference(Map, Map)用来比较两个Map以获取所有不同点。该方法返回MapDifference对象
    8. */
    9. public static void u(Map<String,Object> map1, Map<String,Object> map2) {
    10. MapDifference<String, Object> difference = Maps.difference(map1, map2);
    11. // 是否有差异,返回boolean
    12. boolean areEqual = difference.areEqual();
    13. System.out.println("比较两个Map是否有差异:" + areEqual);
    14. // 两个map的交集
    15. Map<String, Object> entriesInCommon = difference.entriesInCommon();
    16. System.out.println("两个map都有的部分(交集)===:" + entriesInCommon);
    17. // 键相同但是值不同值映射项。返回的Map的值类型为MapDifference.ValueDifference,以表示左右两个不同的值
    18. Map<String, MapDifference.ValueDifference<Object>> entriesDiffering = difference.entriesDiffering();
    19. System.out.println("键相同但是值不同值映射项===:" + entriesDiffering);
    20. // 键只存在于左边Map的映射项
    21. Map<String, Object> onlyOnLeft = difference.entriesOnlyOnLeft();
    22. System.out.println("键只存在于左边Map的映射项:" + onlyOnLeft);
    23. // 键只存在于右边Map的映射项
    24. Map<String, Object> entriesOnlyOnRight = difference.entriesOnlyOnRight();
    25. System.out.println("键只存在于右边Map的映射项:" + entriesOnlyOnRight);
    26. }
    27. }