java.lang.Object
java.util.DoubleSummaryStatistics
- 所有已实现的接口:
-
DoubleConsumer
用于收集统计信息(如计数、最小值、最大值、总和和平均值)的状态对象。
此类设计用于与(尽管不需要)流一起使用。例如,您可以使用以下代码计算双精度流的摘要统计信息:
DoubleSummaryStatistics stats = doubleStream.collect(DoubleSummaryStatistics::new,
DoubleSummaryStatistics::accept,
DoubleSummaryStatistics::combine);
DoubleSummaryStatistics
可以用作流的归约目标。例如:
DoubleSummaryStatistics stats = people.stream()
.collect(Collectors.summarizingDouble(Person::getWeight));
这将在单次遍历中计算人数以及其体重的最小值、最大值、总和和平均值。
- 实现注意事项:
-
此实现不是线程安全的。但是,在并行流上使用
Collectors.summarizingDouble()
是安全的,因为Stream.collect()
的并行实现提供了必要的分区、隔离和结果合并,以实现安全和高效的并行执行。此实现不检查计数的溢出。
- 自 JDK 版本:
- 1.8
-
Constructor Summary
ConstructorDescription使用零计数、零总和、Double.POSITIVE_INFINITY
最小值、Double.NEGATIVE_INFINITY
最大值和零平均值构造一个空实例。DoubleSummaryStatistics
(long count, double min, double max, double sum) 使用指定的计数
、最小值
、最大值
和总和
构造一个非空实例。 -
Method Summary
Modifier and TypeMethodDescriptionvoid
accept
(double value) 记录另一个值到摘要信息中。void
combine
(DoubleSummaryStatistics other) 将另一个DoubleSummaryStatistics
的状态合并到此实例中。final double
返回记录的值的算术平均值,如果没有记录值则返回零。final long
getCount()
返回记录的值的计数。final double
getMax()
返回记录的最大值,如果任何记录的值为 NaN,则返回Double.NaN
,如果没有记录值,则返回Double.NEGATIVE_INFINITY
。final double
getMin()
返回记录的最小值,如果任何记录的值为 NaN,则返回Double.NaN
,如果没有记录值,则返回Double.POSITIVE_INFINITY
。final double
getSum()
返回记录的值的总和,如果没有记录值则返回零。toString()
返回适用于调试的此对象的非空字符串表示形式。Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods declared in interface java.util.function.DoubleConsumer
andThen
-
Constructor Details
-
DoubleSummaryStatistics
public DoubleSummaryStatistics()使用零计数、零总和、Double.POSITIVE_INFINITY
最小值、Double.NEGATIVE_INFINITY
最大值和零平均值构造一个空实例。 -
DoubleSummaryStatistics
public DoubleSummaryStatistics(long count, double min, double max, double sum) throws IllegalArgumentException 使用指定的计数
、最小值
、最大值
和总和
构造一个非空实例。如果
计数
为零,则忽略剩余参数并构造一个空实例。如果参数不一致,则抛出
IllegalArgumentException
。必要的一致参数条件为:计数 >= 0
(最小值 <= 最大值 && !isNaN(总和)) || (isNaN(最小值) && isNaN(最大值) && isNaN(总和))
- API 注意事项:
-
参数正确性的强制执行意味着从
DoubleSummaryStatistics
源实例获取的记录值集合可能不是此构造函数的合法参数集,因为源记录值的计数可能会发生算术溢出。一致的参数条件不足以防止创建内部不一致的实例。一个这样状态的示例是:计数
= 2,最小值
= 1,最大值
= 2,总和
= 0。 - 参数:
-
计数
- 值的计数 -
最小值
- 最小值 -
最大值
- 最大值 -
总和
- 所有值的总和 - 抛出:
-
IllegalArgumentException
- 如果参数不一致 - 自 JDK 版本:
- 10
-
-
Method Details
-
accept
public void accept(double value) 记录另一个值到摘要信息中。- 指定者:
-
accept
在接口DoubleConsumer
- 参数:
-
value
- 输入值
-
combine
将另一个DoubleSummaryStatistics
的状态合并到此实例中。- 参数:
-
other
- 另一个DoubleSummaryStatistics
- 抛出:
-
NullPointerException
- 如果other
为null
-
getCount
public final long getCount()返回记录的值的计数。- 返回:
- 值的计数
-
getSum
public final double getSum()返回记录的值的总和,如果没有记录值则返回零。- API 注意事项:
- 按绝对值递增排序的值往往会产生更准确的结果。
- 返回:
- 值的总和,如果没有则返回零
-
getMin
public final double getMin()返回记录的最小值,如果任何记录的值为 NaN,则返回Double.NaN
,如果没有记录值,则返回Double.POSITIVE_INFINITY
。与数值比较运算符不同,此方法认为负零严格小于正零。- 返回:
-
最小记录的值,如果任何记录的值为 NaN,则返回
Double.NaN
,如果没有记录值,则返回Double.POSITIVE_INFINITY
-
getMax
public final double getMax()返回记录的最大值,如果任何记录的值为 NaN,则返回Double.NaN
,如果没有记录值,则返回Double.NEGATIVE_INFINITY
。与数值比较运算符不同,此方法认为负零严格小于正零。- 返回:
-
最大记录的值,如果任何记录的值为 NaN,则返回
Double.NaN
,如果没有记录值,则返回Double.NEGATIVE_INFINITY
-
getAverage
public final double getAverage()返回记录的值的算术平均值,如果没有记录值则返回零。计算的平均值在数值上可能会有所变化,并且具有与计算总和相同的特殊情况行为;有关详细信息,请参见
getSum()
。- API 注意事项:
- 按绝对值递增排序的值往往会产生更准确的结果。
- 返回:
- 值的算术平均值,如果没有则返回零
-
toString
返回适用于调试的此对象的非空字符串表示形式。确切的呈现格式未指定,可能会在不同实现和版本之间有所变化。
-