如何在 java 构造函数中使用 List<CustomType> 参数创建树状结构
How to create a tree like structure with a List<CustomType> parameter in java constructor
我有一个 class Org 有 name 和 tasks 我想使用 class 构造函数在树状结构中打印每个名称下的任务列表:
name -> A tasks -> B, C, name ->B tasks -> D, E, name -> C, tasks -> F,G
A
/ \
B C
/ \ / \
D E F G
这里是 class 结构:
static class Org {
char name;
List<Org> tasks;
Org(char name, List<Org> tasks){
this.name = name;
this.tasks = tasks;
}
我阅读了 ,但它不适用于我正在做的事情。
这是我试过的
List<Org> org = new Org('A', new ArrayList<Org>('B','C')); // for the first level
org.add('B', new ArrayList<Org>('D','E')); // for the second level
org.add('C', new ArrayList<Org>('F','G')); // for the third level
这不起作用,因为构造函数中的第二个参数需要 Org 类型而不是 char 类型。您将如何使用此构造函数创建这样的树?任何帮助将不胜感激。
对于这些问题,我们应该自下而上解决。
Org orgG = new Org('G', Arrays.asList());
Org orgF = new Org('F', Arrays.asList());
Org orgE = new Org('E', Arrays.asList());
Org orgD = new Org('D', Arrays.asList());
Org orgC = new Org('C', Arrays.asList(orgF, orgG));
Org orgB = new Org('B', Arrays.asList(orgD, orgE));
Org orgA = new Org('A', Arrays.asList(orgC, orgB));
有了这个,如果 Org
有空列表意味着它是一个叶节点(没有子节点)。
你必须从下往上开始,构造子对象并将其传递给父构造函数。为了简洁起见,我将 Org...
替换为 List<Org>
:
new Org('A',
new Org('B',
new Org('D'), new Org('E')),
new Org('C',
new Org('F'), new Org('G')))
为了遇到类似问题的任何人的利益,我能够根据贡献者提供的评论和答案得到我需要的东西。
Org orgG = new Org('G', new ArrayList());
Org orgF = new Org('F', new ArrayList());
Org orgE = new Org('E', new ArrayList());
Org orgD = new Org('D', Arrays.asList(orgH,orgI));
Org orgC = new Org('C', Arrays.asList(orgF,orgG));
Org orgB = new Org('B', Arrays.asList(orgD,orgE));
Org orgA = new Org('A', Arrays.asList(orgB,orgC));
我有一个 class Org 有 name 和 tasks 我想使用 class 构造函数在树状结构中打印每个名称下的任务列表:
name -> A tasks -> B, C, name ->B tasks -> D, E, name -> C, tasks -> F,G
A
/ \
B C
/ \ / \
D E F G
这里是 class 结构:
static class Org {
char name;
List<Org> tasks;
Org(char name, List<Org> tasks){
this.name = name;
this.tasks = tasks;
}
我阅读了
List<Org> org = new Org('A', new ArrayList<Org>('B','C')); // for the first level
org.add('B', new ArrayList<Org>('D','E')); // for the second level
org.add('C', new ArrayList<Org>('F','G')); // for the third level
这不起作用,因为构造函数中的第二个参数需要 Org 类型而不是 char 类型。您将如何使用此构造函数创建这样的树?任何帮助将不胜感激。
对于这些问题,我们应该自下而上解决。
Org orgG = new Org('G', Arrays.asList());
Org orgF = new Org('F', Arrays.asList());
Org orgE = new Org('E', Arrays.asList());
Org orgD = new Org('D', Arrays.asList());
Org orgC = new Org('C', Arrays.asList(orgF, orgG));
Org orgB = new Org('B', Arrays.asList(orgD, orgE));
Org orgA = new Org('A', Arrays.asList(orgC, orgB));
有了这个,如果 Org
有空列表意味着它是一个叶节点(没有子节点)。
你必须从下往上开始,构造子对象并将其传递给父构造函数。为了简洁起见,我将 Org...
替换为 List<Org>
:
new Org('A',
new Org('B',
new Org('D'), new Org('E')),
new Org('C',
new Org('F'), new Org('G')))
为了遇到类似问题的任何人的利益,我能够根据贡献者提供的评论和答案得到我需要的东西。
Org orgG = new Org('G', new ArrayList());
Org orgF = new Org('F', new ArrayList());
Org orgE = new Org('E', new ArrayList());
Org orgD = new Org('D', Arrays.asList(orgH,orgI));
Org orgC = new Org('C', Arrays.asList(orgF,orgG));
Org orgB = new Org('B', Arrays.asList(orgD,orgE));
Org orgA = new Org('A', Arrays.asList(orgB,orgC));