我有一个pojos列表,我想要执行一些分组。类似的东西:
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
,值为List
{{1}所述Pojo
的对象。
我打算使用Java 8 lambdas来实现这一目标。我可以通过以下方式完成第一级分组:
minorCategory
我现在如何再次在Map<String, Pojo> result = list
.stream()
.collect(groupingBy(p -> p.getCategory().getMajorCategory()));
上分组并获得我想要的minorCategory
?
更新
提供的第一个答案对于最初提供的示例是正确的,但我已经更新了问题。鲁本在接受的答案中发表评论,提供了最后一部分。
答案 0 :(得分:13)
groupingBy(Pojo::getMajorCategory, groupingBy(Pojo::getMinorCategory))
应该有用吗,我想?