Java 8 lambdas按多个字段分组

Java 8 lambdas按多个字段分组,java,java-8,java-stream,collectors,Java,Java 8,Java Stream,Collectors,我有一个POJO列表,我想对其执行一些分组。比如: public class Pojo { private final Category category; private final BigDecimal someValue; } public class Category { private final String majorCategory; private final String minorCategory; } 我想要一个Map,其中键是majo

我有一个POJO列表,我想对其执行一些分组。比如:

public class Pojo {
    private final Category category;
    private final BigDecimal someValue;
}

public class Category {
    private final String majorCategory;
    private final String minorCategory;
}
我想要一个
Map
,其中键是
majorCategory
,值是一个
Map
,键是
minorCategory
,值是所述
minorCategory
对象的
列表

我打算使用Java8Lambdas来实现这一点。我可以通过以下方式完成第一级分组:

Map<String, Pojo> result = list
    .stream()
    .collect(groupingBy(p -> p.getCategory().getMajorCategory()));
Map结果=列表
.stream()
.collect(分组方式(p->p.getCategory().getMajorCategory());
我现在如何在
minorCategory
上再次分组并获得我想要的
地图

更新

提供的第一个答案对于最初提供的示例是正确的,但是我已经更新了问题。鲁本在公认答案中的评论提供了谜题的最后一块

groupingBy(Pojo::getMajorCategory, groupingBy(Pojo::getMinorCategory))

我想应该行吗?

谢谢你,这对我问题中的例子确实行,但我可能过于简单了。我实际上是在pojo中包含的对象上的一个字段上进行分组,比如说,名为category。我尝试了
.collect(groupingBy(p->p.getCategory().getMajorCategory(),groupingBy(p->p.getCategory().getMinorCategory()))
,但它不能切芥末。你有什么想法吗?`@RobertBain list.stream().collect(groupingBy((Pojo p)->p.getCategory().getMajorCategory(),groupingBy((Pojo p)->p.getCategory().getMinorCategory());所有答案之间有什么区别?