我有一个这样定义的列表映射:Map<Date,List<TimesheetContribution>> groupedByDate;TimesheetContribution 类有一个返回双精度的方法 getHours()。我想要的是:Map<Date, Double> hoursMap = groupedByDate.entrySet().stream()...其中映射值是来自 TimesheetContribution 实例的总小时数。我能想到的唯一方法是这样的:Map<Date, Double> toilAmounts = groupedByDate.entrySet().stream()
.collect(Collectors.toMap(Function.identity(), value -> ???));如您所见,我在尝试定义值映射器时遇到了麻烦,我需要一个嵌套流,对此我感到很不自在。有什么建议么?或者我必须用老式的方式来做这件事?
1 回答
SMILET
TA贡献1796条经验 获得超4个赞
您可以这样做:
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()));
添加回答
举报
0/150
提交
取消