从嵌套列表对象创建树结构
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
现在您可以按照自己的方式修改它了
我有以下 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
现在您可以按照自己的方式修改它了