Java对比两个Map中差异

import com.google.common.collect.MapDifference;
import com.google.common.collect.Maps;

    public static void main(String[] args) {
        Map<String, String> map1 = new HashMap<>();
        map1.put("key1", "value1");
        map1.put("key2", "value2");
        map1.put("key3", "value3");
        map1.put("key5", "value5");

        Map<String, String> map2 = new HashMap<>();
        map2.put("key2", "value2");
        map2.put("key3", "value3");
        map2.put("key4", "value4");
        map2.put("key6", "value6");

        MapDifference<String, String> difference = Maps.difference(map1, map2);

        Map<String, String> entriesOnlyOnLeft = difference.entriesOnlyOnLeft();
        for (Map.Entry<String, String> entry : entriesOnlyOnLeft.entrySet()) {
            System.out.println("map1多出的键值对:" + entry.getKey() + "=" + entry.getValue());
        }


        Map<String, String> entriesInCommon = difference.entriesInCommon();
        for (Map.Entry<String, String> entry : entriesInCommon.entrySet()) {
            System.out.println("公用的键值对:" + entry.getKey() + "=" + entry.getValue());
        }

        Map<String, String> entriesOnlyOnRight = difference.entriesOnlyOnRight();
        for (Map.Entry<String, String> entry : entriesOnlyOnRight.entrySet()) {
            System.out.println("map2多出的键值对:" + entry.getKey() + "=" + entry.getValue());
        }
    }

以下是一个简单的Java代码示例,演示如何比较两个不同的`List<Map<String, String>>`对象的差异: ```java import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ListMapCompareDemo { public static void main(String[] args) { // 创建两个List<Map<String, String>>对象 List<Map<String, String>> list1 = new ArrayList<>(); List<Map<String, String>> list2 = new ArrayList<>(); // 向list1添加数据 Map<String, String> map1 = new HashMap<>(); map1.put("id", "1"); map1.put("name", "张三"); map1.put("age", "20"); list1.add(map1); Map<String, String> map2 = new HashMap<>(); map2.put("id", "2"); map2.put("name", "李四"); map2.put("age", "30"); list1.add(map2); // 向list2添加数据 Map<String, String> map3 = new HashMap<>(); map3.put("id", "1"); map3.put("name", "张三"); map3.put("age", "25"); list2.add(map3); Map<String, String> map4 = new HashMap<>(); map4.put("id", "3"); map4.put("name", "王五"); map4.put("age", "40"); list2.add(map4); // 比较两个List<Map<String, String>>对象的差异 List<Map<String, String>> added = new ArrayList<>(); List<Map<String, String>> deleted = new ArrayList<>(); List<Map<String, String>> modified = new ArrayList<>(); // 遍历list1,查找新增和修改的数据 for (Map<String, String> map : list1) { String id = map.get("id"); Map<String, String> map2 = findMapById(list2, id); if (map2 == null) { added.add(map); } else if (!map.equals(map2)) { modified.add(map); } } // 遍历list2,查找删除的数据 for (Map<String, String> map : list2) { String id = map.get("id"); Map<String, String> map1 = findMapById(list1, id); if (map1 == null) { deleted.add(map); } } // 输出差异数据 System.out.println("新增数据:"); for (Map<String, String> map : added) { System.out.println(map); } System.out.println("删除数据:"); for (Map<String, String> map : deleted) { System.out.println(map); } System.out.println("修改数据:"); for (Map<String, String> map : modified) { System.out.println("修改前:" + findMapById(list1, map.get("id"))); System.out.println("修改后:" + map); } } // 根据id查找Map对象 private static Map<String, String> findMapById(List<Map<String, String>> list, String id) { for (Map<String, String> map : list) { if (id.equals(map.get("id"))) { return map; } } return null; } } ``` 以上代码,首先创建了两个`List<Map<String, String>>`对象,然后向其添加了不同的数据。接着,通过遍历两个列表,查找新增、删除和修改的数据,并将其分别保存到`added`、`deleted`和`modified`三个列表。最后,输出差异数据。 需要注意的是,以上示例代码仅为演示用途,实际使用时需要根据具体业务逻辑进行修改。同时,对于大规模的数据比较,可能需要使用更高效的算法或工具库来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值