如何比较除某些键之外的两个嵌套映射

时间:2017-03-15 13:25:51

标签: java

我有两个嵌套的Hashmaps,它们具有以下结构

key1: {
 key2: {
    bad_key: {}
}
}

如何比较两个哈希图,只省略某些嵌套键?

一种解决方案是遍历两个地图(您可以展平地图,即将折叠的密钥包含在主地图中),删除嵌套的密钥并执行

Map1.equals(Map2)

有没有更好的解决方案?

1 个答案:

答案 0 :(得分:2)

您可以使用Guava: Google Core Libraries For Java

中的Maps
MapDifference<Integer, Student> mapDifference = Maps.difference(map1, map2);

如果你不想使用外部库,我会做这样的事情:

List<String> keys = Arrays.asList("one", "two", "three'");


for(String key: keys){
    if(!left.get(key).equals(right.get(key))){
       //do something with difference
    }
};