Java,从分层映射中删除任何给定的键
Java, remove any given key from a hierarchical map
假设我有一张 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"
]
]
你能帮我定义一下方法吗?
非常感谢。
下面是一个递归函数,将从地图的所有级别删除键。
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);
}
}
}
假设我有一张 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"
]
]
你能帮我定义一下方法吗?
非常感谢。
下面是一个递归函数,将从地图的所有级别删除键。
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);
}
}
}