我在一个名为Folder and Parent.
的表中有两列。在我的服务中,我有一个名为FolderService.getAllParents(s)
的方法 - 其中(s)
是一个字符串。但是,一个文件夹也可以在父列中,我试图做一个递归公式来获取所有文件夹及其各自的父项。
例如Documents (parent)
和Film (folder)
也Film (parent)
和Reviews(folder)
,Reviews(parent)
和name(folder)
等等。我想根据搜索到的字符串获取所有父母和文件夹。这是我坚持的递归公式:
public ArrayList<String> getParents(String s){
ArrayList<String> mn = new ArrayList<String>();
for(FolderManager y:FolderService.getAllParents(s)){
if(y.getParent().isEmpty()){
mn.add(y.getFolder());
return mn;
}else{
return getParents(y.getFolder());
}
}
return mn;
}
我没有得到任何错误,但我只是到了
Documents (parent) - Film (folder) Film (parent) - Reviews(folder)
答案 0 :(得分:1)
首先,如果我理解正确,你的FolderService.getAllParents()将始终返回一个对象(因为一个子节点只能有一个父节点,不是吗?)。 那我不认为这里需要递归。它可以通过一个简单的循环来完成:
List<String> getParents(FolderManager fm) {
List<String> parents = new ArrayList<>();
while (fm.getParent() != null) {
parents.add(fm.getParent().getFolder());
fm = fm.getParent();
}
return parents;
}