如何在 java 构造函数中使用 List<CustomType> 参数创建树状结构

How to create a tree like structure with a List<CustomType> parameter in java constructor

我有一个 class Orgnametasks 我想使用 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));