【发布时间】:2018-02-07 13:29:39
【问题描述】:
我有一个班级列表说ProductDto
public class ProductDto {
private String Id;
private String status;
private Booker booker;
private String category;
private String type;
}
我想要一张如下图:-
Map<String,Map<String,Map<String,Booker>>
属性映射如下:
Map<status,Map<category,Map<type,Booker>
我知道使用Collectors.groupingBy 可以轻松完成一级分组,没有任何麻烦。
我尝试将它用于嵌套级别,但是当作为键的字段开始出现相同的值时,它对我来说失败了。
我的代码如下:-
list.stream()
.collect(Collectors.groupingBy(
(FenergoProductDto productDto) ->
productDto.getStatus()
,
Collectors.toMap(k -> k.getProductCategory(), fProductDto -> {
Map<String, Booker> productTypeMap = new ProductTypes();
productTypeMap.put(fProductDto.getProductTypeName(),
createBooker(fProductDto.getBookingEntityName()));
return productTypeMap;
})
));
如果有人知道使用流的好方法,请分享!
【问题讨论】:
-
你需要给出一个reducing函数来指示在发生key冲突时需要做什么
-
你能在这里发布一些有用的东西或任何参考链接等吗?
标签: java java-8 java-stream