基于多个属性对对象进行分组

时间:2020-12-23 19:29:17

标签: java

我想根据某些属性对对象进行分组/收集。该项目有一些 Product 对象:

public class Product {
    private String id;
    private String name;
    private ProductFlavor flavor; // enum
    private ProductType productType; // enum
    private ProductCategory category; // enum
}

我知道需要做的是创建一个集合,以便产品按类别组合,每个类别按产品类型组合,然后显示该产品的所有可能的口味。

例如

  • 产品 1 属于类别 1,属于 cookie 类型,具有香草味
  • 产品 2 属于类别 2,属于饼干类型,具有草莓味
  • 产品 3 属于类别 1,属于饼干类型,具有巧克力风味

可视化这是一个产品表,在这种情况下应该包含

  • 带有下拉香草和巧克力的饼干
  • 带有下拉草莓的饼干

我开始按类别对它们进行分组,但后来我被卡住了。因为对我来说,它应该是一个产品类别列表,其中包含具有可能口味的分组产品。

Map<ProductCategory, List<Product>> result = dummies.stream().collect(
        Collectors.groupingBy(
                Product::getCategory,
                TreeMap::new,
                Collectors.mapping(event -> event, Collectors.toCollection(ArrayList::new))
        )
);

0 个答案:

没有答案