Было бы трудно отслеживать все возможные внутренние карты. Без сомнения, гораздо более эффективное решение, чем мое, если вы проиндексировали ключи и тому подобное. Однако, если быстрые и грязные работы для вас, попробуйте это. Вы не упомянули язык, поэтому получаете Java - надеюсь, я угадала правильно!
import java.util.HashMap;
import java.util.Map.Entry;
public class InnerMap extends HashMap<String, String> {
public InnerMap getInnerMap(String key) {
InnerMap innerMap = new InnerMap();
for (Entry<String, String> entry : entrySet()) {
String existingKey = entry.getKey();
String value = entry.getValue();
if (existingKey.startsWith(key)) {
String newKey = existingKey.substring(key.length());
innerMap.put(newKey, value);
}
}
return innerMap;
}
}
public class Test {
public static void main(String[] args) {
InnerMap baseMap = new InnerMap();
baseMap.put("aabb", "one");
baseMap.put("aabbdd", "two");
InnerMap map1 = baseMap.getInnerMap("aa");
System.out.println(map1.get("bb"));// => "one"
System.out.println(map1.get("bbdd"));// => "two"
System.out.println(map1.get("aa"));// => null
InnerMap map2 = map1.getInnerMap("bb");
System.out.println(map2.get("dd"));// => "two"
}
}