java 两个不同的List<Map<String,String>> 比较差异 代码
时间: 2023-11-11 18:16:31 浏览: 138
两个list比较 取不同的对象
4星 · 用户满意度95%
以下是一个简单的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`三个列表中。最后,输出差异数据。
需要注意的是,以上示例代码仅为演示用途,实际使用时需要根据具体业务逻辑进行修改。同时,对于大规模的数据比较,可能需要使用更高效的算法或工具库来实现。
阅读全文