8

我有一个要对其进行分组的 pojo 列表。就像是:

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

public class Category {
    private final String majorCategory;
    private final String minorCategory;
}

我想要一个Map<String, Map<String, List<Pojo>>>键在哪里,majorCategory值是一个Map带有键的值,minorCategory值是一个对象的说。ListPojominorCategory

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

Map<String, Pojo> result = list
    .stream()
    .collect(groupingBy(p -> p.getCategory().getMajorCategory()));

我现在如何才能再次分组minorCategory并获得Map<String, Map<String, List<Pojo>>>我想要的?

更新

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

4

1 回答 1

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

应该工作,我想?

于 2015-06-12T16:49:03.677 回答