0

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

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;
}

所以,只有叶集团有产品。我需要为组创建一个方法,每个组将递归地获取所有可用产品。例如。对于 Subgroup2 可用的 2.1.1 产品和 2.1.2 产品。
据我了解,它必须检查子组是否有产品,如果没有,则调用自身并在下一级检查。有没有可以正确看待这个递归方法?

4

2 回答 2

1

由于没有 SubGroup 和没有 Product 的 Group 是无用的,因此使 Group 抽象。并给它一个抽象函数 getProducts

abstract class Group { 
   int id; 
   String name; 
   public abstract List<Product> 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 ...
    }

}
于 2021-04-08T08:56:10.930 回答
0

嘿,朋友,我认为您已经开设了亲子课程。您的 Parent 类是 Group,它由 SubGroup 类和 LeafGroup 类实现。所以我认为你是由这两个类单独实现的。因此,您应该首先在 Group 类中创建必须被这两个类覆盖的任何方法。

于 2021-04-08T08:57:36.477 回答