2013-02-27 63 views
0

我有一個A級是這樣的:(數據結構)的Java LinkedList的對象,以樹

class A { 
    Long id; 
    String name; 
    Long parentId; // refers to another A object's id 
} 

現在,我得到一個對象列表,我希望把他們都到一個數據結構,如「文件夾樹「,然後使用JSP在GUI上查看該樹,但我不知道如何實現這一點。那麼你能幫助解決這兩個問題:
1.如何從給定的對象列表建立一個「文件夾樹」?有沒有可用的API支持?
2.我們如何瀏覽整個數據樹,並在不使用遞歸的情況下將其作爲文件夾樹在JSP上查看? (我的意思是什麼是最好的顯示方式)
非常感謝。

+2

有兩個屬性:'龍id'和'龍parentId'到每一個節點到它的父關聯。你試圖解決這個問題?如果你沒有任何想法,請拿一支鉛筆和一張紙,思考一些事情(因爲這看起來像一個家庭作業練習)。 – 2013-02-27 07:40:01

+0

所以你的意思是'A'的對象包含其他'A'對象的引用? – 2013-02-27 07:40:23

+0

@NishantShreshth:是的,它包含它的父母的ID,而不是父對象 – 2013-02-27 07:48:13

回答

0

根據您的意見,我認爲你可以改變你的A類是這樣的:

class A { 
    Long id; 
    String name; 
    Long parentId; // refers to another A object's id 
    List<A> childrenNodes = new ArrayList(); 
} 

現在,假設你擁有一個充滿所有的數據List<A> lstData,你想將它轉換成樹,你可以使用下面的代碼/算法:

public List<A> convertIntoTree(List<A> lstData) { 
    for(A parentA : lstData) { 
     //setting the children nodes for parentA 
     for(A childA : lstData) { 
      if (childA.getParentId() == parentA.getId()) { 
       parentA.getChildrenNodes().add(childA); 
      } 
     } 
    } 
    //the main tree 
    List<A> lstParents = new ArrayList<A>(); 
    //filling the tree 
    for(A parentA : lstData) { 
     //change this for your check if parent function or another rule 
     if (parentA.getParentId() == 0) { 
      lstParents.add(parentA); 
     } 
    } 
    return lstParents; 
}