用java获取一个无限套娃字典的键值
时间: 2024-01-31 13:04:57 浏览: 257
目前限制10个组件,我是这样解决的-易语言
无限套娃字典的键值是一个递归的数据结构,可以使用Java中的Map来实现。以下是一个示例代码,使用Map来表示一个无限套娃字典:
```
import java.util.HashMap;
import java.util.Map;
public class NestedDictionary {
private Map<String, Object> dictionary = new HashMap<>();
public void setValue(String key, Object value) {
String[] keys = key.split("\\.");
Map<String, Object> currentDict = dictionary;
for (int i = 0; i < keys.length - 1; i++) {
String currentKey = keys[i];
if (!currentDict.containsKey(currentKey)) {
currentDict.put(currentKey, new HashMap<String, Object>());
}
currentDict = (Map<String, Object>) currentDict.get(currentKey);
}
currentDict.put(keys[keys.length - 1], value);
}
public Object getValue(String key) {
String[] keys = key.split("\\.");
Map<String, Object> currentDict = dictionary;
for (int i = 0; i < keys.length - 1; i++) {
String currentKey = keys[i];
if (!currentDict.containsKey(currentKey)) {
return null;
}
currentDict = (Map<String, Object>) currentDict.get(currentKey);
}
return currentDict.get(keys[keys.length - 1]);
}
}
```
这个示例代码中的`NestedDictionary`类实现了一个无限套娃字典。`setValue`方法用于在字典中设置一个键值对,`getValue`方法用于获取一个键对应的值。键可以是一个或多个用`.`分隔的字符串。
例如,可以使用以下代码来测试这个类:
```
NestedDictionary dict = new NestedDictionary();
dict.setValue("a.b.c", "value1");
dict.setValue("a.b.d", "value2");
dict.setValue("a.c.e.f", "value3");
System.out.println(dict.getValue("a.b.c")); // 输出"value1"
System.out.println(dict.getValue("a.b.d")); // 输出"value2"
System.out.println(dict.getValue("a.c.e.f")); // 输出"value3"
System.out.println(dict.getValue("a.b")); // 输出null
```
阅读全文