找出两张地图之间的差异

use*_*342 2 java guava

我有两张当前和之前的地图,我想看看两张地图之间是否有任何差异.如果currentMap中存在新键,或者同一个键的值不同,我可以停止.

Map<String, String> previousValue;
Map<String, String> currValue;

boolean isChangePresent = currValue.entrySet().stream().anyMatch(
                    x -> !previousValue.containsKey(x.getKey()) ||
                        (previousValue.get(x.getKey()) != null && !previousValue.get(x.getKey()).equals(
                            x.getValue())));
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做这个或内置的实用功能,这样做的东西?

Mar*_*anP 5

在番石榴:

MapDifference<String, String> mapDifference = Maps.difference(currValue, previousValue);

return !mapDifference.entriesOnlyOnLeft().isEmpty() 
        || !mapDifference.entriesDiffering().isEmpty();
Run Code Online (Sandbox Code Playgroud)

https://www.leveluplunch.com/java/examples/guava-map-difference-example/