为了账号安全,请及时绑定邮箱和手机立即绑定

Java 8+ 映射列表映射

Java 8+ 映射列表映射

一只斗牛犬 2023-06-21 13:54:56
我有一个这样定义的列表映射: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()));


查看完整回答
反对 回复 2023-06-21
  • 1 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信