Java 如何存储文件结构类型的数据以便于检索和插入
我想以分层格式存储数据,如/a/b/c 插入操作是 插入/a/b/c/d1 20(其中20为d1的尺寸) 插入/a/b/c/d2 30(其中30为d2尺寸) 插入/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 如何存储文件结构类型的数据以便于检索和插入,java,data-structures,tree,Java,Data Structures,Tree,我想以分层格式存储数据,如/a/b/c 插入操作是 插入/a/b/c/d1 20(其中20为d1的尺寸) 插入/a/b/c/d2 30(其中30为d2尺寸) 插入/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实现,效果会更好。您可以使用HashMap,如下所示: public class Te
如果可以用java实现,效果会更好。您可以使用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);
}
}
}
}
公共类测试{
公共静态void main(字符串…参数){
HashMap=newHashMap();
付诸表决(地图,“/a/b/c/d1”,第20页);
放置(地图,“/a/b/c/d2”,30);
放置(地图,“/a/b/c”,50);
放置(地图,“/a/b/x”,40);
System.out.println(“/a/b/c:+map.get(“/a/b/c”));
System.out.println(“/a/b:+map.get(“/a/b”);
}
静态void put(HashMap映射、字符串路径、int值){
字符串p=“”;
for(字符串e:path.split(“/”){
如果(如长度()>0){
p+=“/”+e;
整数old=map.get(p);
put(p,(old==null?0:old)+值);
}
}
}
}
Hm,现在我们知道你想要什么了,但是。。。你的问题是什么?你试过什么吗?