筛选出2个Map中不同的key
Set oldKeys = oldMap.keySet();
Set newKeys = newMap.keySet();
要筛选出两个Map中不同的key,可以使用Java集合操作。以下是几种常见方法:
1.使用removeAll()方法(会修改原集合):
Set<String> diffKeys = new HashSet<>(oldKeys);
diffKeys.removeAll(newKeys); // 得到只在oldMap中存在的key
2.使用Java 8 Stream API(推荐,不会修改原集合):
Set<String> onlyInOld = oldKeys.stream()
.filter(key -> !newKeys.contains(key))
.collect(Collectors.toSet());
Set<String> onlyInNew = newKeys.stream()
.filter(key -> !oldKeys.contains(key))
.collect(Collectors.toSet());
3.使用Guava库的Sets工具类:
Set<String> onlyInOld = Sets.difference(oldKeys, newKeys);
Set<String> onlyInNew = Sets.difference(newKeys, oldKeys);
4.如果要找出所有不同的key(两个集合的对称差集):
Set<String> allDiffKeys = new HashSet<>(oldKeys);
allDiffKeys.addAll(newKeys); // 先合并
allDiffKeys.removeIf(key -> oldKeys.contains(key) && newKeys.contains(key)); // 移除共有的
注意:如果Map很大,建议使用方法2或3,它们不会修改原始集合且性能较好。