Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 8+;映射列表的映射_Java_Java 8_Java Stream - Fatal编程技术网

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());