从嵌套列表对象创建树结构

Create tree structure from nested list objects

我有以下 class:

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

在我的 Main class 中,我填充了一个列表 List<MyObject>
此列表中的对象必须以树状结构打印。
我可以使用什么算法来实现这一点?

将打印方法添加到您的 class。示例方法

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

现在您可以按照自己的方式修改它了