2016-09-29 139 views
0

我有以下结构的两个嵌套hashmaps(嵌套的级别可以变化) 嵌套的值可以是地图或地图数组的实例。比较两个嵌套hashmaps

{ 

    key1:[ 

    { 

     nkey1:[ 

     nval1, 
     nval2 
     ] 
    }, 
    { 

     nkey2:[ 

     nval3, 
     nval4 
     ] 
    } 
    ] 
} 

目前我在两张地图上做了等号操作,期望所有的键都是相同的。我想在比较时排除某些键。

说我应该说我想排除key1 :: nkey2。我如何做到这一点? A map.keySet()对嵌套地图没有帮助。如何通过遍历此嵌套映射的键比较来有效地执行密钥?

回答

1

您可以拼合地图,即将折叠的键包含在主地图中。为了您的例子中,你将有钥匙:

"key1" 
"key1:nkey1" 
"key1:nkey2" 

在这种情况下,您将不再需要使用深等于每个按键上,因为所有的水平最终会被检查反正。你可以在遍历一个keySet()时删除你想要的任何键。

+0

这是有道理的......但在nkey1和nkey2具有相同键名的情况下,我们需要额外的比较 – Tania

+0

@Tania是否意味着相同级别的键可能不是唯一的?这是否意味着他们是相同的地图,他们的内容可以合并,或者他们真的应该是单独的地图? – bashnesnos