我想以/ 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中实现它会更好
答案 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);
}
}
}
}