я хочу создать hashmap из hashmap с внутренними и внешними картами? - PullRequest
0 голосов
/ 19 ноября 2009
public interface InnerMap<V> extends Map<String, V> {
    Map<String, V> getInnerMap(String prefix);
}

Например:

baseMap.put("aabb", "one");
baseMap.put("aabbddd", "two");
InnerMap map1 = baseMap.getInnerMap("aa");
map1.get("bb") => "one"
map1.get("bbdd") => "two"
map1.get("aa") => null
map2 = map1.getInnerMap("bb");
map2.get("dd") => "two"

, а также хотите переопределить метод put и get

Ответы [ 2 ]

2 голосов
/ 19 ноября 2009

Было бы трудно отслеживать все возможные внутренние карты. Без сомнения, гораздо более эффективное решение, чем мое, если вы проиндексировали ключи и тому подобное. Однако, если быстрые и грязные работы для вас, попробуйте это. Вы не упомянули язык, поэтому получаете 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"
    }
}
0 голосов
/ 19 ноября 2009

Звучит так, будто вы хотите структуру, похожую на Trie. (Произнесите это «попробуй», чтобы избежать безумия.)

http://code.google.com/p/patricia-trie/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...