モジュール java.base
パッケージ java.util

クラスDoubleSummaryStatistics

  • すべての実装されたインタフェース:
    DoubleConsumer

    public class DoubleSummaryStatistics
    extends Object
    implements DoubleConsumer
    カウント数、最小、最大、合計、平均などの統計情報を収集するための状態オブジェクト。

    このクラスは、streamsを扱う(必須ではないが)ために作られたものです。 たとえば、次を使って、doubleのストリームに関するサマリー統計を計算することができます。

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

    DoubleSummaryStatisticsは、streamリダクション・ターゲットとして使用できます。 たとえば:

     
     DoubleSummaryStatistics stats = people.stream()
         .collect(Collectors.summarizingDouble(Person::getWeight));
    
    これは、単一パスで、人数だけでなく、その体重の最小値、最大値、合計、および平均値も計算します。

    実装上のノート:
    この実装はスレッドに対して安全ではありません。 ただし、Stream.collect()のパラレル実装によって、安全で効率的なパラレル実行に必要なパーティション化、分離および結果のマージが提供されるため、パラレル・ストリームでCollectors.summarizingDouble()を使用することは安全です。
    導入されたバージョン:
    1.8
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      DoubleSummaryStatistics()
      ゼロカウント、ゼロ合計、Double.POSITIVE_INFINITY最小、Double.NEGATIVE_INFINITY最大およびゼロ平均の空のインスタンスを構築します。
      DoubleSummaryStatistics​(long count, double min, double max, double sum)
      指定されたcountminmaxおよびsumを使用して、空でないインスタンスを構築します。
    • メソッドのサマリー

      すべてのメソッド インスタンス・メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      void accept​(double value)
      別の値をサマリー情報に記録します。
      void combine​(DoubleSummaryStatistics other)
      もう一方のDoubleSummaryStatisticsの状態をこれに統合します。
      double getAverage()
      記録された値の算術平均を返します。値が記録されていない場合は0を返します。
      long getCount()
      記録された値のカウントを返します。
      double getMax()
      記録された最大値を返します。記録された値がNaNだった場合はDouble.NaNを返し、値が記録されなかった場合はDouble.NEGATIVE_INFINITYを返します。
      double getMin()
      記録された最小値を返します。記録された値がNaNだった場合はDouble.NaNを返し、値が記録されなかった場合はDouble.POSITIVE_INFINITYを返します。
      double getSum()
      記録された値の合計を返します。値が記録されていない場合は0を返します。
      String toString()
      デバッグに適しているこのオブジェクトの空ではない文字列表現を返します。
    • コンストラクタの詳細

      • DoubleSummaryStatistics

        public DoubleSummaryStatistics()
        ゼロカウント、ゼロ合計、Double.POSITIVE_INFINITY最小、Double.NEGATIVE_INFINITY最大およびゼロ平均の空のインスタンスを構築します。
      • DoubleSummaryStatistics

        public DoubleSummaryStatistics​(long count,
                                       double min,
                                       double max,
                                       double sum)
                                throws IllegalArgumentException
        指定されたcountminmaxおよびsumを使用して、空でないインスタンスを構築します。

        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がnullである場合
      • getCount

        public final long getCount()
        記録された値のカウントを返します。
        戻り値:
        値の数
      • getSum

        public final double getSum()
        記録された値の合計を返します。値が記録されていない場合は0を返します。

        浮動小数点合計の値は、入力値と加算操作順序の両方の関数になります。 このメソッドの加算操作の順序は意図的に未定義になっていますが、それは、実装が計算結果の速度や精度を柔軟に改善できるようにするためです。 特に、このメソッドを補正加算などのテクニックを使って実装すれば、double値の単純な合計に比べ、数値合計の誤り限界を減らせます。 操作の順序が未指定であり、異なる合計スキームを使用する可能性があるため、このメソッドの出力は同じ入力値で異なる場合があります。

        様々な条件によって、無限合計が計算される場合があります。 これは、合計される記録されたすべての値が有限であっても発生する可能性があります。 記録された値が無限である場合、合計は無限になります。

        • 記録された値がNaNの場合、最終合計はNaNになります。
        • 記録された値に1つ以上の無限が含まれる場合、合計は無限またはNaNになります。
          • 記録された値に逆符号の無限が含まれる場合、合計はNaNになります。
          • 記録された値に1つの符号の無限が含まれ、中間合計が反対符号の無限大にオーバーフローした場合、合計はNaNになります。
        有限値の中間合計は、反対符号付き無限要素にオーバーフローする可能性があります。その場合、記録された値がすべて有限であっても、最終合計はNaNになります。 記録されたすべての値がゼロの場合、ゼロの符号は最終合計で保持されることは保証されません

        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()
        記録された値の算術平均を返します。値が記録されていない場合は0を返します。

        計算された平均は数値的に変化し、合計を計算する際の特殊なケース動作になります。詳細は、getSum()を参照してください。

        APIのノート:
        値を大きさの絶対値の昇順にソートすると、結果の精度が改善される傾向があります。
        戻り値:
        値の算術平均。値がない場合はゼロ
      • toString

        public String toString()
        デバッグに適しているこのオブジェクトの空ではない文字列表現を返します。 正確な表示フォーマットは未指定であり、実装とバージョンの間で異なることがあります。
        オーバーライド:
        toString、クラスObject
        戻り値:
        このオブジェクトの文字列表現