如何在java中存储层次结构数据?

时间:2013-10-16 09:48:07

标签: java sql loops recursion iterator

在数据库表中,我维护了父文件夹和子文件夹的关系,如下所示 datatable 。使用该关系,我需要在jsp网页中创建分层结构。要显示我使用http://myfaces.apache.org/tomahawk t:tree2组件的结构。我的要求是,我需要从数据库中获取数据并将该关系存储在java变量中。为此,我需要一种递归技术来存储java变量中的树结构或(层次结构)。请帮忙找到答案。

数据表: enter image description here

目录结构的分层视图: enter image description here

谢谢

3 个答案:

答案 0 :(得分:0)

创建一个Node类,其中包含子节点列表和其他所需的状态变量,如isdirectory等。请求您再次搜索SO,并使用#34; Tree Like Data Structure in Java"。我希望这会有所帮助。

答案 1 :(得分:0)

您可以使用递归来迭代它。

void processChilds(Item child) {
List<Item> childs = selectChilds(child);
    for(Item i: childs) {
       //do smth
       processChilds(i);
    }
}

或者您需要一次选择所有记录,然后将其解析为您自己的对象结构。它可以是HashMap或您自己的树状结构。

class Item {
  List<Item> childs;
}

我建议你选择第一个(因为编码很简单),除非你的树真的很深

答案 2 :(得分:0)

在Java中创建树结构几乎与任何其他语言相同。您应该阅读Data Structures and Algorithms

根据您的使用方式,您的数据结构会有所不同。这是一个很容易向上移动的好方法:

class Node
{
   private Node parent;
   private int value;
}

与叶子(或节点,如果您希望整个树可搜索)上的哈希查找一起,您有一个完美的方法来查找任何文件的路径,并使用这样的结构的路径。如果您有一个节点并且想要找到它的子节点,则不能使用此结构。然后可以使用已经显示为答案之一的更传统的树。