2010-01-25 23 views
4

我有一個POJO類調用LEVEL &他的課diagramm這樣的:將pojo類的列表轉換爲Jdom樹?

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

我不知道任何圖書館都會按照你的要求去做。


您的課程級別正確,但不是唯一選項。您還可以添加屬性Set<Level> children。您可以保留或不保存parent鏈接(雙向關係或多對一)。

這可能使你的樹結構更自然...


例如,如果你使用的ORM如Hibernate,你可能只是找到的第一級實例(在您收到名單從休眠),並且你已經有你的樹,只是忽略其他實例。


否則,算法的解決方案可能是:

  1. 有一個unprocessed列表
  2. 發現未處理的所有實例,有沒有父所有實例;將它們添加到你的樹中,從未處理的地方刪除它們。
  3. 循環在以下方面:
    • 發現未處理的所有實例,有在樹中的父(如果樹沒有一個有效的實施contains,您可以使用臨時設置此) 。
    • 將它們添加到您的樹中,從未處理的地方刪除它們。