在数据库表中,我维护了父子文件夹关系,如下图所示。使用这种关系,我需要在 jsp 网页中创建层次结构。为了显示该结构,我使用了http://myfaces.apache.org/tomahawk t:tree2 组件。我的要求是,我需要从数据库中获取数据并将该关系存储在 java 变量中。为此,我需要一种递归技术来将树结构或(分层结构)存储在 java 变量中。请帮忙寻找答案。
数据表:
目录结构的分层视图:
谢谢
创建一个具有子节点列表和其他所需状态变量(如 isdirectory 等)的 Node 类。请求您使用“Java 中的树状数据结构”再次搜索 SO。我希望这有帮助。
您可以使用递归对其进行迭代。
void processChilds(Item child) {
List<Item> childs = selectChilds(child);
for(Item i: childs) {
//do smth
processChilds(i);
}
}
或者您需要一次选择所有记录,然后将其解析为您自己的对象结构。它可以是 HashMap 或你自己的树状结构。
class Item {
List<Item> childs;
}
我建议你使用第一个(因为它很容易编码)除非你的树真的很深
在 Java 中创建树结构几乎与在任何其他语言中相同。您应该阅读Data Structures and Algorithms。
根据您将如何使用它,您的数据结构会有所不同。一个很容易向上遍历的非常好的方法是:
class Node
{
private Node parent;
private int value;
}
与叶子(或节点,如果您希望整个树可搜索)上的哈希查找一起,您有一个完美的方法来查找任何文件的路径以及使用这种结构的路径。如果您有一个节点并且想要找到它的子节点,则不能使用此结构。然后可以使用已经显示为答案之一的更传统的树。