将pojo类列表转换为Jdom树?

时间:2010-01-25 16:31:21

标签: java algorithm jdom

我有一个POJO课程电话LEVEL&他的班级就像这样:

    0,1
    ------------|
    |           |
    |           |
   \|/          |   
  level-<>-------

换句话说:

public class Level
{
 private int id;
 private int label;
 private Set<Level> labels;
 private Level parent;
 ...
 }

我有一个方法从数据库中检索List<Level>中的所有级别。

我想要jdom表示(使用org.jdom api)树(就像你的目录的树一样)

LEVEl 1
+++LEVEL 2
++++++LEVEL 3
LEVEL 4
LEVEL 5

我知道算法必须是递归的。

你有任何解决方案吗?有什么工具可以将java类转换为jdom树吗?

1 个答案:

答案 0 :(得分:1)

我不知道任何库可以完全满足您的要求。


您的班级水平是正确的,但不是唯一的选择。您还可以添加属性Set<Level> children 。您可以保留parent链接(双向关系,或多对一关系)。

这可能会让你的树形结构更自然......


例如,如果您使用ORM ,那么您可以找到第一级实例(在您从Hibernate接收的列表中),并且您已经拥有了您的树,只需忽略其他情况。


否则,算法解决方案可能是:

  1. 将您的所有实例都放在unprocessed列表
  2. 查找未处理的所有实例,没有父项;将它们添加到树中,将其从未处理中删除。
  3. 循环以下内容:
    • 找到未处理的所有实例,其父树在树中(如果树没有contains的有效实现,则可以使用临时Set来实现)。
    • 将它们添加到您的树中,将其从未处理中删除。