可以使用Java的Streams API来比较两个Maps
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class MapComparator {
public static void main(String[] args) {
Map> map1 = new HashMap<>();
map1.put("key1", List.of("value1", "value2", "value3"));
map1.put("key2", List.of("value4", "value5"));
Map> map2 = new HashMap<>();
map2.put("key1", List.of("value1", "value2", "value3"));
map2.put("key3", List.of("value6", "value7"));
// 找到map1中不在map2中的键值对
Map> diff1 = map1.entrySet()
.stream()
.filter(e -> !map2.containsKey(e.getKey()) || !map2.get(e.getKey()).equals(e.getValue()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println("diff1: " + diff1);
// 找到map2中不在map1中的键值对
Map> diff2 = map2.entrySet()
.stream()
.filter(e -> !map1.containsKey(e.getKey()) || !map1.get(e.getKey()).equals(e.getValue()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println("diff2: " + diff2);
}
}
运行以上示例代码的输出结果为:
diff1: {key2=[value4, value5]}
diff2: {key3=[value6, value7]}
其中,diff1
为在map1
中存在而在map2
中不存在或者值不相等的键值对,diff2
为在map2
中存在而在`
下一篇:比较两个MDF文件之间的表格。