如何为具有目录结构的java类创建递归方法?

如何为具有目录结构的java类创建递归方法?,java,recursion,Java,Recursion,我需要用类创建一个目录结构。 它必须如下所示: Group 1) Subgroup1 1.1 subgroup1 1.1.1 product1 1.1.2 product2 1.2 subgroup2 2) Subgroup2 2.1 subgroup1 2.1.1 product1 2.1.2 product2

我需要用类创建一个目录结构。 它必须如下所示:

Group 
   1) Subgroup1
       1.1 subgroup1
               1.1.1 product1
               1.1.2 product2  
       1.2 subgroup2   
  2)  Subgroup2
       2.1 subgroup1
               2.1.1 product1
               2.1.2 product2  
       2.2 subgroup2   
我已经创建了三个类:Group、SubGroup和LeafGroup,它们之间有这样的关系:

class Group { 
int id; 
String name; 
}

class SubGroup extends Group { 

List<Group> subgroups;
}

class LeafGroup extends Group { 

List<Product> products;
}
类组{
int-id;
字符串名;
}
类子组扩展了组{
列出小组;
}
类LeafGroup扩展组{
列出产品清单;
}
所以,只有Leaf集团有产品。 我需要为组创建一个方法,其中每个组将递归地获取所有可用的产品。 例如适用于2.1.1产品和2.1.2产品的子类2。
据我所知,它必须检查子组是否有产品,如果没有,则调用自身并在下一个级别进行检查。
Have能正确地看待这个递归方法吗?

因为一个没有子组和乘积的组是无用的,它会使组变得抽象。 并给它一个抽象的函数getProducts

abstract class Group { 
   int id; 
   String name; 
   public abstract List<Product> getProducts();
}
抽象类组{
int-id;
字符串名;
公共摘要列表getProducts();
}
现在您需要为SubGroup和LeafGroup实现它

class LeafGroup extends Group { 

    List<Product> products;

    @Override
    public List<Prodcut> getProducts() {
        return products
    }

}


class SubGroup extends Group { 

    List<Group> subgroups;

    @Override
    public List<Prodcut> getProducts() {
        // insert here the stream/flatmap 
        // or loop implementation of collectiong the products of the subgroups, 
        // as you can simply call getProducts on every group
        return ...
    }

}
class LeafGroup扩展组{
列出产品清单;
@凌驾
公共列表产品(){
退货
}
}
类子组扩展了组{
列出小组;
@凌驾
公共列表产品(){
//在此插入流/平面图
//或收集子组产品的循环实现,
//因为您只需在每个组上调用getProducts即可
返回。。。
}
}

嘿,朋友,我想你已经给了家长和孩子们上课了。父类是Group,它由SubGroup类和LeafGroup类实现。所以我认为这两个类都是单独实现的。因此,您应该首先在Group类中创建任何必须被这两个类覆盖的方法。

为什么要分成三种不同类型的组?因为只有leaf组有产品,其他组有子组列表。谢谢您的帮助!