Java 8+;映射列表的映射
我有一张列表地图,定义如下:Java 8+;映射列表的映射,java,java-8,java-stream,Java,Java 8,Java Stream,我有一张列表地图,定义如下: Map<Date,List<TimesheetContribution>> groupedByDate; Map groupedByDate; TimesheetContribution类有一个方法getHours(),它返回double 我想要的是: Map<Date, Double> hoursMap = groupedByDate.entrySet().stream()... Map hoursMap=groupedB
Map<Date,List<TimesheetContribution>> groupedByDate;
Map groupedByDate;
TimesheetContribution类有一个方法getHours(),它返回double
我想要的是:
Map<Date, Double> hoursMap = groupedByDate.entrySet().stream()...
Map hoursMap=groupedByDate.entrySet().stream()。。。
其中,映射值是来自时间表分配实例的总小时数
我能想到的唯一办法是这样:
Map<Date, Double> toilAmounts = groupedByDate.entrySet().stream()
.collect(Collectors.toMap(Function.identity(), value -> ???));
Map=groupedByDate.entrySet().stream()
.collect(Collectors.toMap(Function.identity(),value->?);
如您所见,我在尝试定义值映射器时遇到了麻烦,我需要一个嵌套流,对此我感到不舒服
有什么建议吗?或者我必须用老式的方法来做吗?你可以这样做:
Map<Date, Double> hoursMap = groupedByDate.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey, // for a key and not an entry
e -> e.getValue().stream()
.mapToDouble(TimesheetContribution::getHours)
.sum()));
Map hoursMap=groupedByDate.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,//用于键而不是项
e->e.getValue().stream()
.mapToDouble(时间表贡献::getHours)
.sum());