我有一個這樣定義的列表映射: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
提交
取消