在其他人可以搜索的多个对象之间创建松散关系

Creating a loose relationship between multiple objects that others can search on

我有一份汽车制造商、型号和 trim 的列表。这些对象中的每一个都有不同的属性。前任。汽车制造商可以有进口与国产、运动与豪华等。我当前的设置如下所示,

public Manufacturer {
    private String manufacturerName; //Getter&Setter as well
    private List<Model> modelList; //Getter&Setter as well
    //additional attributes
}

public Model {
    private String modelName;
    private List<Trim> trimList; //Getter&Setter as well
    //additional attributes
}

public Trim {
    private String trimType; //Getter&Setter as well
    //additional attributes
}

public ContainerClass {
    public List<Manufacturer> manufacturerList;
}

现在我可以将对象创建为 Mazda、3、Grand Touring 并将对象关联到列表中。但是,如果有人出现并且只想要一辆有天窗的汽车,那么必须深入研究每个可能的制造商和该制造商的每个型号以查看 trim 是否具有天窗属性,这感觉很浪费。有什么策略可以让开发人员(包括我自己)更轻松地做到这一点?

注意:我现在没有数据库,因为我没有真正的数据来填充数据库,这是一个权宜之计,直到我稍后获得该数据,所以请不要就说 "create a database" :)。我还从 JBehave 的 ExamplesTable 对象加载此信息。

您可以通过一些子流过滤制造商:

container.getManufacturerList().stream()
    .filter(manufacturer ->
        manufacturer.getModelList().stream().anyMatch(model ->
            model.getTrimList().stream().anyMatch(trim ->
                trim.getTrimType().equals("sunroof"))))
    .collect(Collectors.toList());