Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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
在Java8中收集统计数据_Java_Lambda_Java 8_Functional Programming_Java Stream - Fatal编程技术网

在Java8中收集统计数据

在Java8中收集统计数据,java,lambda,java-8,functional-programming,java-stream,Java,Lambda,Java 8,Functional Programming,Java Stream,我想在对一组数据进行分组后收集统计数据,但我不知道这是否可行 Map<String, DoubleSummaryStatistics> menuStatistics = menuPrices.parallelStream() .collect(Collectors.groupingBy(cp -> dt1.format(cp.getUpdateDate())),

我想在对一组数据进行分组后收集统计数据,但我不知道这是否可行

Map<String, DoubleSummaryStatistics> menuStatistics =

                menuPrices.parallelStream()
                        .collect(Collectors.groupingBy(cp -> dt1.format(cp.getUpdateDate())),
                                Collector.of(DoubleSummaryStatistics::new));
地图菜单统计=
menuPrices.parallelStream()
.collect(Collectors.groupingBy(cp->dt1.format(cp.getUpdateDate()),
Collector.of(DoubleSummaryStatistics::new));
因为我有一些编译问题:

Multiple markers at this line
    - The method of(Supplier<R>, BiConsumer<R,T>, BinaryOperator<R>, Collector.Characteristics...) in the type Collector is not applicable for the arguments 
     (DoubleSummaryStatistics::new)
    - The constructed object of type DoubleSummaryStatistics is incompatible with the descriptor's return type: R
此行有多个标记
-类型收集器中的方法(Supplier、BiConsumer、BinaryOperator、Collector.Characteristics…)不适用于参数
(DoubleSummaryStatistics::新建)
-构造的DoubleSummaryStatistics类型的对象与描述符的返回类型不兼容:R

您需要使用
收集器。SummaringDouble()
,假设您的类(流
的元素类型)有一些
double
属性,您要为其计算统计信息:

Map<String, DoubleSummaryStatistics>
    menuStatistics =
        menuPrices.parallelStream()
                  .collect(Collectors.groupingBy(cp -> dt1.format(cp.getUpdateDate()),
                           Collectors.summarizingDouble(cp -> cp.getSomeDoubleValue())));
Map
菜单统计=
menuPrices.parallelStream()
.collect(Collectors.groupingBy(cp->dt1.format(cp.getUpdateDate()),
Collectors.summaringdouble(cp->cp.getSomeDoubleValue());

试试这个
menuPrices.parallelStream().collect(Collectors.groupingBy(cp->dt1.format(cp.getUpdateDate()),Collectors.summaringDouble(YourClass::someProperty))