2个List<Map<String,String>>,map的值是无须的,对比2个list的不同的字段
时间: 2024-02-21 20:01:52 浏览: 61
两个list比较 取不同的对象
4星 · 用户满意度95%
好的,我理解你的问题了。你需要比较两个List<Map<String,String>>,并找出它们之间不同的字段。
首先,我们需要确定两个List中的Map数量是否相等,如果不相等,则它们肯定不同。如果相等,则可以逐一比较两个List中的每一个Map。
对于每一个Map,我们可以使用Java 8的Stream API来比较它们之间的不同字段。具体实现如下:
```java
// 假设 list1 和 list2 分别为两个List<Map<String,String>>
if (list1.size() != list2.size()) {
// 如果两个List的大小不一致,则它们不同
System.out.println("两个List不同");
return;
}
// 比较每一个Map
for (int i = 0; i < list1.size(); i++) {
Map<String, String> map1 = list1.get(i);
Map<String, String> map2 = list2.get(i);
// 比较两个Map中的不同字段
List<String> differentFields = map1.entrySet().stream()
.filter(entry -> !entry.getValue().equals(map2.get(entry.getKey())))
.map(Map.Entry::getKey)
.collect(Collectors.toList());
if (!differentFields.isEmpty()) {
// 如果两个Map之间有不同的字段,则它们不同
System.out.println("第 " + (i + 1) + " 个Map不同,不同的字段有:" + differentFields);
return;
}
}
// 如果所有的Map都相同,则两个List相同
System.out.println("两个List相同");
```
这段代码会逐一比较两个List中的每一个Map,并找出它们之间不同的字段。如果两个List完全相同,则会输出"两个List相同";否则会输出不同的字段以及它们所在的Map的编号。
阅读全文