2

我想以分层格式存储数据,例如 /a/b/c。

插入操作是

insert /a/b/c/d1 20(其中 20 是 d1 的大小) insert /a/b/c/d2 30(其中 30 是 d2 的大小) insert /a/b/c 50(其中 50 是c 本身)插入 /a/b/x 40(其中 40 是 x 的大小)

检索操作是

获取 /a/b/c 的大小应返回 100 (20+30+50)。获取 /a/b 的大小应返回 140(所有子项的大小为 20+30+50+40)

如果能用java实现就更好了

4

1 回答 1

2

您可以使用 HashMap,如下所示:

public class Test {
    public static void main(String... args) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        put(map, "/a/b/c/d1", 20);
        put(map, "/a/b/c/d2", 30);
        put(map, "/a/b/c", 50);
        put(map, "/a/b/x", 40);
        System.out.println("/a/b/c: " + map.get("/a/b/c"));
        System.out.println("/a/b: " + map.get("/a/b"));
    }
    static void put(HashMap<String, Integer> map, String path, int value) {
        String p = "";
        for(String e : path.split("/")) {
            if (e.length() > 0) {
                p += "/" + e;
                Integer old = map.get(p);
                map.put(p, (old == null ? 0 : old) + value);
            }
        }
    }
}
于 2012-05-03T07:16:38.870 回答