0
该函数的构思是它将构建一个包含键(路径)和与该路径对应的数据的映射。这就是为什么我继续将地图传回,因为它正在建造。使用递归函数构建地图
的问题似乎是,它得到那里有没有孩子的地步,但仍附加下一路径到当前路径:
输入的路径始终以“/”开头。我们为此获得了儿童,这可能是level_1A,level_1C,level_1B。然后,我会逐一检查他们是否有孩子。
假设level_1A有子级level_2A,level_2B。不知何故,该算法被逮住了,并追加像这样:
然而,应该需单独治疗这些,就像这样:
/level_1A/level_2A
/level_1A/level_2B
这里就是整个结构会是什么样子:
/level_1A data_1A
/level_1A/level_2A data_2A
/level_1A/level_2B data_2B
/level_1B (empty)
/level_1C (empty)
这里的递归方法:
public Map<String, String> getAll(String path, Map<String, String> all) throws Exception {
List<String> children = client.getChildren().forPath(path);
if(children != null && children.size() > 0) {
for(String child: children) {
System.out.println("child: " + child);
if(!path.equals("/")) {
path = path + "/" + child;
} else {
path = path + child;
}
Stat stat = client.checkExists().watched().forPath(path);
if(stat != null && stat.getDataLength() > 0) {
all.put(path, new String(client.getData().forPath(path)));
}
getAll(path, all);
}
}
return all;
}
感谢Beloo!愚蠢的错误。 – Matt