2016-01-02 82 views
-1

我有下面的類:從嵌套列表創建樹結構對象

public class MyObject { 
    String name; 
    List<MyObject> myObjectsList;// it contains nested MyObject references sometimes also in cyclic manner. 
} 

在我Main類我已填充列表List<MyObject>
此列表中的對象必須以樹狀結構打印。
我可以使用什麼算法來達到這個目的?

+0

的方式那麼,有什麼理由myObjectsList是一個列表?那裏有順序嗎?你做過谷歌搜索到目前爲止如何做到這一點?基本上你到目前爲止嘗試解決這個問題? –

+0

myObjectsList是列表,因爲必須存儲多個對象。沒有連續的順序。我在谷歌搜索,但沒有發現任何有用的,我不知道從哪裏開始 – user3546762

回答

1

將打印方法添加到您的班級。例如方法

public void print(int level) 
{ 
    // print own name 
    String branch = "|"; 
    for (int i = 0; i < level; i++) 
    { 
     branch += "-"; 
    } 
    System.out.println(branch + name); 

    // print names from list 
    if (myObjectsList != null) 
    { 
     for (MyObject m : myObjectsList) 
     { 
      m.print(level+1); 
     } 
    } 
} 

測試

public static void main(String[] args) 
{ 
    MyObject myObj = new MyObject(); 
    myObj.name = "Name00"; 
    myObj.myObjectsList = new ArrayList<MyObject>(); 

    MyObject tmp1; 
    MyObject tmp2; 

    tmp1 = new MyObject(); 
    tmp1.name = "Name10"; 
    myObj.myObjectsList.add(tmp1); 

    tmp1.myObjectsList = new ArrayList<MyObject>(); 
    tmp2 = new MyObject(); 
    tmp2.name = "Name20"; 
    tmp1.myObjectsList.add(tmp2); 

    tmp2 = new MyObject(); 
    tmp2.name = "Name21"; 
    tmp1.myObjectsList.add(tmp2); 

    tmp1 = new MyObject(); 
    tmp1.name = "Name11"; 
    myObj.myObjectsList.add(tmp1); 

    tmp1 = new MyObject(); 
    tmp1.name = "Name12"; 
    myObj.myObjectsList.add(tmp1); 

    myObj.print(0); 
} 

結果

|Name00 
|-Name10 
|--Name20 
|--Name21 
|-Name11 
|-Name12 

現在你可以修改它要