如何存储文件结构类型的数据,以便于检索和插入

时间:2012-05-03 04:55:14

标签: java data-structures tree

我想以/ 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本身的大小) insert / a / b / x 40(其中40是x的大小)

检索操作

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

如果可以在java中实现它会更好

1 个答案:

答案 0 :(得分: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);
            }
        }
    }
}