模块 java.base
 java.util

类 DoubleSummaryStatistics

java.lang.Object
java.util.DoubleSummaryStatistics
所有已实现的接口:
DoubleConsumer

public class DoubleSummaryStatistics extends Object implements DoubleConsumer
用于收集计数、最小值、最大值、总和和平均值等统计信息的状态对象。

此类旨在与(尽管不需要) streams 一起使用。例如,您可以使用以下方法计算双打流的摘要统计信息:

 
 DoubleSummaryStatistics stats = doubleStream.collect(DoubleSummaryStatistics::new,
                           DoubleSummaryStatistics::accept,
                           DoubleSummaryStatistics::combine);
  

DoubleSummaryStatistics 可用作 stream减少 目标。例如:

 
 DoubleSummaryStatistics stats = people.stream()
   .collect(Collectors.summarizingDouble(Person::getWeight));
 
这一次计算出人数,以及他们体重的最小值、最大值、总和和平均值。
实现注意事项:
此实现不是线程安全的。但是,在并行流上使用 Collectors.summarizingDouble() 是安全的,因为 Stream.collect() 的并行实现为安全高效的并行执行提供了必要的分区、隔离和结果合并。

此实现不检查计数是否溢出。

自从:
1.8
  • 构造方法总结

    构造方法
    构造方法
    描述
    构造一个具有零计数、零和、Double.POSITIVE_INFINITYmin、Double.NEGATIVE_INFINITYmax 和零平均值的空实例。
    DoubleSummaryStatistics(long count, double min, double max, double sum)
    构造具有指定 countminmaxsum 的非空实例。
  • 方法总结

    修饰符和类型
    方法
    描述
    void
    accept(double value)
    将另一个值记录到摘要信息中。
    void
    将另一个 DoubleSummaryStatistics 的状态组合到这个中。
    final double
    返回记录值的算术平均值,如果没有记录值则返回零。
    final long
    返回记录值的计数。
    final double
    返回最大记录值,Double.NaN(如果任何记录值为 NaN)或Double.NEGATIVE_INFINITY(如果未记录任何值)。
    final double
    返回最小记录值,Double.NaN(如果任何记录值为 NaN)或 Double.POSITIVE_INFINITY(如果未记录任何值)。
    final double
    返回记录值的总和,如果没有记录值则返回零。
    返回此对象适合调试的非空字符串表示形式。

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    在接口 java.util.function.DoubleConsumer 中声明的方法

    andThen
  • 构造方法详细信息

    • DoubleSummaryStatistics

      public DoubleSummaryStatistics()
      构造一个具有零计数、零和、Double.POSITIVE_INFINITYmin、Double.NEGATIVE_INFINITYmax 和零平均值的空实例。
    • DoubleSummaryStatistics

      public DoubleSummaryStatistics(long count, double min, double max, double sum) throws IllegalArgumentException
      构造具有指定 countminmaxsum 的非空实例。

      如果 count 为零,则忽略其余参数并构造一个空实例。

      如果参数不一致,则抛出 IllegalArgumentException。必要的一致参数条件是:

      • count >= 0
      • (min <= max && !isNaN(sum)) || (isNaN(min) && isNaN(max) && isNaN(sum))
      API 注意:
      参数正确性的实施意味着从 DoubleSummaryStatistics 源实例获得的检索记录值集可能不是该构造函数的合法参数集,因为源记录值计数的算术溢出。一致的参数条件不足以防止创建内部不一致的实例。这种状态的一个例子是一个实例:count = 2、min = 1、max = 2 和 sum = 0。
      参数:
      count - 值的计数
      min - 最小值
      max - 最大值
      sum - 所有值的总和
      抛出:
      IllegalArgumentException - 如果参数不一致
      自从:
      10
  • 方法详情

    • accept

      public void accept(double value)
      将另一个值记录到摘要信息中。
      指定者:
      accept 在接口 DoubleConsumer
      参数:
      value - 输入值
    • combine

      public void combine(DoubleSummaryStatistics  other)
      将另一个 DoubleSummaryStatistics 的状态组合到这个中。
      参数:
      other - 另一个 DoubleSummaryStatistics
      抛出:
      NullPointerException - 如果 other 为空
    • getCount

      public final long getCount()
      返回记录值的计数。
      返回:
      值的计数
    • getSum

      public final double getSum()
      返回记录值的总和,如果没有记录值则返回零。

      浮点和的值是输入值和加法运算顺序的函数。此方法的加法操作顺序未有意定义,以允许实现灵活性以提高计算结果的速度和准确性。特别地,与double值的简单求和相比,可以使用补偿求和或其他技术来实现该方法以减少数字求和中的误差范围。由于未指定操作顺序和使用不同求和方案的可能性,此方法的输出可能因相同的输入值而异。

      各种条件都可能导致计算非有限和。即使求和的所有记录值都是有限的,也会发生这种情况。如果任何记录的值是非有限的,则总和将是非有限的:

      • 如果任何记录值是 NaN,则最终总和将为 NaN。
      • 如果记录的值包含一个或多个无穷大,则总和将为无穷大或 NaN。
        • 如果记录的值包含相反符号的无穷大,则总和将为 NaN。
        • 如果记录的值包含一个符号的无穷大并且中间和溢出到相反符号的无穷大,则该和可能是 NaN。
      有限值的中间和有可能溢出到符号相反的无穷大;如果发生这种情况,即使记录的值都是有限的,最终的总和也将为 NaN。如果所有记录的值都是零,零的符号not保证在最终和中保留。
      API 注意:
      按绝对幅度递增排序的值往往会产生更准确的结果。
      返回:
      值的总和,如果没有则为零
    • getMin

      public final double getMin()
      返回最小记录值,Double.NaN(如果任何记录值为 NaN)或 Double.POSITIVE_INFINITY(如果未记录任何值)。与数值比较运算符不同,此方法认为负零严格小于正零。
      返回:
      最小记录值,Double.NaN 如果任何记录值为 NaN 或 Double.POSITIVE_INFINITY 如果没有值被记录
    • getMax

      public final double getMax()
      返回最大记录值,Double.NaN(如果任何记录值为 NaN)或Double.NEGATIVE_INFINITY(如果未记录任何值)。与数值比较运算符不同,此方法认为负零严格小于正零。
      返回:
      最大记录值,Double.NaN 如果任何记录值为 NaN 或 Double.NEGATIVE_INFINITY 如果没有值被记录
    • getAverage

      public final double getAverage()
      返回记录值的算术平均值,如果没有记录值则返回零。

      计算出的平均值可能在数值上有所不同,并且在计算总和时具有特殊情况行为;有关详细信息,请参阅 getSum()

      API 注意:
      按绝对幅度递增排序的值往往会产生更准确的结果。
      返回:
      值的算术平均值,如果没有则为零
    • toString

      public String  toString()
      返回此对象适合调试的非空字符串表示形式。确切的表示格式未指定,并且可能因实现和版本而异。
      重写:
      toString 在类 Object
      返回:
      对象的字符串表示形式。