Java,从分层映射中删除任何给定的键

时间:2015-01-13 06:42:20

标签: java hashmap

说我有一张Java地图:

[
"Level 1.1":"Value1.1",
"Level 1.2":[
    "Level2.1":"Value2.1"
    "Level2.2":[
     "Level3.1":"Value3.1"
    ]
 ]
]

所有级别的密钥都是唯一的。可以在每个级别更改密钥的顺序。它可能有三个级别以上。

我想创建一个名为removeKey()的方法。它的作用是使用参数或参数列表,并遍历此映射并在所有级别删除该键。

因此,例如,调用removeKey(" Level3.1")将删除第三级上的该键,并且左侧的地图将为:

[
"Level 1.1":"Value1.1",
"Level 1.2":[
    "Level2.1":"Value2.1"
    "Level2.2":[
    ]
 ]
]

调用removeKey(" Level3.1"," Level 2.2")将导致:

[
"Level 1.1":"Value1.1",
"Level 1.2":[
    "Level2.1":"Value2.1"
 ]
]

你能帮我解决方法定义吗?

谢谢你。

1 个答案:

答案 0 :(得分:0)

下面是一个递归函数,它将从地图的所有级别删除键。

public static void removeKey(Map<String, Object> levels, String ... keys) {
    if (levels == null
            || (levels != null && levels.size() == 0)) {
        return;
    }

    for (String k : keys) {
        levels.remove(k);
    }

    for (String key : levels.keySet()) {
        if (levels.get(key) instanceof Map) {
            removeKey((Map<String, Object>) levels.get(key), keys);
        } 
    }
}