4

我有一个 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.jdomapi)一棵树(就像你的目录的树)

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

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

你有什么解决办法吗?任何将java类转换为jdom树的工具?

4

1 回答 1

1

我不知道有任何图书馆可以完全满足您的要求。


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

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


例如,如果您正在使用像 Hibernate 这样的 ORM,您可以只找到第一级实例(在您从 Hibernate 收到的列表中),并且您已经有了自己的树,只需忽略其他实例。


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

  1. 将所有实例都列在一个unprocessed列表中
  2. 找到所有没有父对象的未处理实例;将它们添加到您的树中,将它们从未处理中删除。
  3. 循环以下内容:
    • 找到未处理的所有实例,它们的父级在树中(如果树没有有效的实现contains,您可以为此使用临时 Set)。
    • 将它们添加到您的树中,将它们从未处理中删除。
于 2010-01-25T16:52:35.290 回答