如何为具有目录结构的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组有产品,其他组有子组列表。谢谢您的帮助!