java 两个 list<map> 中找到map 中不同的key 和value
时间: 2024-03-16 09:44:51 浏览: 101
可以按照以下步骤实现:
1. 遍历第一个 `List<Map>`,将每个 `Map` 中的键值对存储到一个 `Set` 中。
2. 遍历第二个 `List<Map>`,对于每个 `Map`,遍历其中的键值对。如果某个键值对的键在第一个 `Set` 中不存在,或者键存在但对应的值不同,则说明这个键值对是不同的,可以将其输出或存储到一个新的 `List<Map>` 中。
以下是示例代码:
```java
List<Map<String, Object>> list1 = ...; // 第一个 List<Map>
List<Map<String, Object>> list2 = ...; // 第二个 List<Map>
// 存储第一个 List<Map> 中所有的键
Set<Map.Entry<String, Object>> keySet = new HashSet<>();
for (Map<String, Object> map : list1) {
keySet.addAll(map.entrySet());
}
// 遍历第二个 List<Map>,找到不同的键值对
List<Map<String, Object>> differentMaps = new ArrayList<>();
for (Map<String, Object> map : list2) {
Map<String, Object> differentMap = new HashMap<>();
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (!keySet.contains(entry)) {
// 键不存在
differentMap.put(entry.getKey(), entry.getValue());
} else {
// 键存在,但值不同
Map.Entry<String, Object> existingEntry = keySet.stream()
.filter(e -> e.getKey().equals(entry.getKey()))
.findFirst()
.orElse(null);
if (existingEntry != null && !existingEntry.getValue().equals(entry.getValue())) {
differentMap.put(entry.getKey(), entry.getValue());
}
}
}
if (!differentMap.isEmpty()) {
differentMaps.add(differentMap);
}
}
// 输出结果
for (Map<String, Object> map : differentMaps) {
System.out.println(map);
}
```
阅读全文