gpt4 book ai didi

Java 8 流 : average and count at once

转载 作者:行者123 更新时间:2023-12-02 06:21:06 25 4
gpt4 key购买 nike

我有一个DoubleStream这是通过一个非常耗时的函数计算出来的,我想同时计算其元素的平均值和计数。

问题是我不想计算 DoubleStream两次,因为提到的值计算非常耗时。我想从一个 lambda 表达式获取 Average 和 Count 的值。

我已经尝试过 collect 的一切和map等等但没有成功。

    final long count = products.stream()
.mapToDouble(this::timeConsumingCalculateRating)
.filter(rating -> rating > 0.0D)
.count();

final double averageRating = products.stream()
.mapToDouble(this::timeConsumingCalculateRating)
.filter(rating -> rating > 0.0D)
.average()
.orElse(0.0D);

非常感谢任何帮助。

最佳答案

使用summaryStatistics() :

DoubleSummaryStatistics stats = products.stream()
.mapToDouble(this::timeConsumingCalculateRating)
.filter(rating -> rating > 0.0D)
.summaryStatistics();
long count = stats.getCount();
double averageRating = stats.getAverage();

关于Java 8 流 : average and count at once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57355105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com