我有一個(gè)這樣定義的列表映射:Map<Date,List<TimesheetContribution>> groupedByDate;TimesheetContribution 類有一個(gè)返回雙精度的方法 getHours()。我想要的是:Map<Date, Double> hoursMap = groupedByDate.entrySet().stream()...其中映射值是來自 TimesheetContribution 實(shí)例的總小時(shí)數(shù)。我能想到的唯一方法是這樣的:Map<Date, Double> toilAmounts = groupedByDate.entrySet().stream()
.collect(Collectors.toMap(Function.identity(), value -> ???));如您所見,我在嘗試定義值映射器時(shí)遇到了麻煩,我需要一個(gè)嵌套流,對(duì)此我感到很不自在。有什么建議么?或者我必須用老式的方式來做這件事?
1 回答

SMILET
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以這樣做:
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()));
添加回答
舉報(bào)
0/150
提交
取消