Rob*_*ain 6 java java-8 java-stream collectors
我有一个pojos列表,我想要执行一些分组.就像是:
public class Pojo {
private final Category category;
private final BigDecimal someValue;
}
public class Category {
private final String majorCategory;
private final String minorCategory;
}
Run Code Online (Sandbox Code Playgroud)
我想Map<String, Map<String, List<Pojo>>>,其中的关键是majorCategory和值是Map与关键minorCategory和值是List中Pojo的对象表示minorCategory.
我打算用Java 8 lambdas来实现这一点.我可以通过以下方式完成第一级分组:
Map<String, Pojo> result = list
.stream()
.collect(groupingBy(p -> p.getCategory().getMajorCategory()));
Run Code Online (Sandbox Code Playgroud)
我怎么能再次分组minorCategory并获得Map<String, Map<String, List<Pojo>>>我的愿望?
更新
提供的第一个答案对于最初提供的示例是正确的,但是我已经更新了问题.鲁本在接受的答案中的评论提供了最后一块拼图.
Lou*_*man 14
groupingBy(Pojo::getMajorCategory, groupingBy(Pojo::getMinorCategory))
Run Code Online (Sandbox Code Playgroud)
应该工作,我想?
| 归档时间: |
|
| 查看次数: |
8690 次 |
| 最近记录: |