org.apache.commons.math3.stat.descriptive

## Class SynchronizedSummaryStatistics

- java.lang.Object
- - org.apache.commons.math3.stat.descriptive.SummaryStatistics
  - - org.apache.commons.math3.stat.descriptive.SynchronizedSummaryStatistics

- All Implemented Interfaces:
    Serializable, StatisticalSummary

      public class SynchronizedSummaryStatistics
      extends SummaryStatistics

  Implementation of `SummaryStatistics` that is safe to use in a multithreaded environment. Multiple threads can safely operate on a single instance without causing runtime exceptions due to race conditions. In effect, this implementation makes modification and access methods atomic operations for a single instance. That is to say, as one thread is computing a statistic from the instance, no other thread can modify the instance nor compute another statistic.
  Since:
    1.2
  Version:
    $Id: SynchronizedSummaryStatistics.java 1416643 2012-12-03 19:37:14Z tn $
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private static long` | `serialVersionUID` Serialization UID

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SynchronizedSummaryStatistics()` Construct a SynchronizedSummaryStatistics instance
    `SynchronizedSummaryStatistics(SynchronizedSummaryStatistics original)` A copy constructor.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addValue(double value)` Add a value to the data
    `void` | `clear()` Resets all statistics and storage
    `SynchronizedSummaryStatistics` | `copy()` Returns a copy of this SynchronizedSummaryStatistics instance with the same internal state.
    `static void` | `copy(SynchronizedSummaryStatistics source, SynchronizedSummaryStatistics dest)` Copies source to dest.
    `boolean` | `equals(Object object)` Returns true iff `object` is a `SummaryStatistics` instance and all statistics have the same values as this.
    `StorelessUnivariateStatistic` | `getGeoMeanImpl()` Returns the currently configured geometric mean implementation
    `double` | `getGeometricMean()` Returns the geometric mean of the values that have been added.
    `double` | `getMax()` Returns the maximum of the values that have been added.
    `StorelessUnivariateStatistic` | `getMaxImpl()` Returns the currently configured maximum implementation
    `double` | `getMean()` Returns the mean of the values that have been added.
    `StorelessUnivariateStatistic` | `getMeanImpl()` Returns the currently configured mean implementation
    `double` | `getMin()` Returns the minimum of the values that have been added.
    `StorelessUnivariateStatistic` | `getMinImpl()` Returns the currently configured minimum implementation
    `long` | `getN()` Returns the number of available values
    `double` | `getPopulationVariance()` Returns the population variance of the values that have been added.
    `double` | `getStandardDeviation()` Returns the standard deviation of the values that have been added.
    `double` | `getSum()` Returns the sum of the values that have been added
    `StorelessUnivariateStatistic` | `getSumImpl()` Returns the currently configured Sum implementation
    `StorelessUnivariateStatistic` | `getSumLogImpl()` Returns the currently configured sum of logs implementation
    `StatisticalSummary` | `getSummary()` Return a `StatisticalSummaryValues` instance reporting current statistics.
    `double` | `getSumsq()` Returns the sum of the squares of the values that have been added.
    `StorelessUnivariateStatistic` | `getSumsqImpl()` Returns the currently configured sum of squares implementation
    `double` | `getVariance()` Returns the (sample) variance of the available values.
    `StorelessUnivariateStatistic` | `getVarianceImpl()` Returns the currently configured variance implementation
    `int` | `hashCode()` Returns hash code based on values of statistics
    `void` | `setGeoMeanImpl(StorelessUnivariateStatistic geoMeanImpl)` Sets the implementation for the geometric mean.
    `void` | `setMaxImpl(StorelessUnivariateStatistic maxImpl)` Sets the implementation for the maximum.
    `void` | `setMeanImpl(StorelessUnivariateStatistic meanImpl)` Sets the implementation for the mean.
    `void` | `setMinImpl(StorelessUnivariateStatistic minImpl)` Sets the implementation for the minimum.
    `void` | `setSumImpl(StorelessUnivariateStatistic sumImpl)` Sets the implementation for the Sum.
    `void` | `setSumLogImpl(StorelessUnivariateStatistic sumLogImpl)` Sets the implementation for the sum of logs.
    `void` | `setSumsqImpl(StorelessUnivariateStatistic sumsqImpl)` Sets the implementation for the sum of squares.
    `void` | `setVarianceImpl(StorelessUnivariateStatistic varianceImpl)` Sets the implementation for the variance.
    `String` | `toString()` Generates a text report displaying summary statistics from values that have been added.

    - ### Methods inherited from class org.apache.commons.math3.stat.descriptive.SummaryStatistics

      `copy, getSecondMoment, getSumOfLogs`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### serialVersionUID

          private static final long serialVersionUID

      Serialization UID
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### SynchronizedSummaryStatistics

          public SynchronizedSummaryStatistics()

      Construct a SynchronizedSummaryStatistics instance

    - #### SynchronizedSummaryStatistics

          public SynchronizedSummaryStatistics(SynchronizedSummaryStatistics original)
                                        throws NullArgumentException

      A copy constructor. Creates a deep-copy of the `original`.
      Parameters:
        `original` - the `SynchronizedSummaryStatistics` instance to copy
      Throws:
        `NullArgumentException` - if original is null

  - ### Method Detail

    - #### getSummary

          public StatisticalSummary getSummary()

      Return a `StatisticalSummaryValues` instance reporting current statistics.
      Overrides:
        `getSummary` in class `SummaryStatistics`
      Returns:
        Current values of statistics

    - #### addValue

          public void addValue(double value)

      Add a value to the data
      Overrides:
        `addValue` in class `SummaryStatistics`
      Parameters:
        `value` - the value to add

    - #### getN

          public long getN()

      Returns the number of available values
      Specified by:
        `getN` in interface `StatisticalSummary`
      Overrides:
        `getN` in class `SummaryStatistics`
      Returns:
        The number of available values

    - #### getSum

          public double getSum()

      Returns the sum of the values that have been added
      Specified by:
        `getSum` in interface `StatisticalSummary`
      Overrides:
        `getSum` in class `SummaryStatistics`
      Returns:
        The sum or `Double.NaN` if no values have been added

    - #### getSumsq

          public double getSumsq()

      Returns the sum of the squares of the values that have been added.

      Double.NaN is returned if no values have been added.

      Overrides:
        `getSumsq` in class `SummaryStatistics`
      Returns:
        The sum of squares

    - #### getMean

          public double getMean()

      Returns the mean of the values that have been added.

      Double.NaN is returned if no values have been added.

      Specified by:
        `getMean` in interface `StatisticalSummary`
      Overrides:
        `getMean` in class `SummaryStatistics`
      Returns:
        the mean

    - #### getStandardDeviation

          public double getStandardDeviation()

      Returns the standard deviation of the values that have been added.

      Double.NaN is returned if no values have been added.

      Specified by:
        `getStandardDeviation` in interface `StatisticalSummary`
      Overrides:
        `getStandardDeviation` in class `SummaryStatistics`
      Returns:
        the standard deviation

    - #### getVariance

          public double getVariance()

      Returns the (sample) variance of the available values.

      This method returns the bias-corrected sample variance (using `n - 1` in the denominator). Use `SummaryStatistics.getPopulationVariance()` for the non-bias-corrected population variance.

      Double.NaN is returned if no values have been added.

      Specified by:
        `getVariance` in interface `StatisticalSummary`
      Overrides:
        `getVariance` in class `SummaryStatistics`
      Returns:
        the variance

    - #### getPopulationVariance

          public double getPopulationVariance()

      Returns the population variance of the values that have been added.

      Double.NaN is returned if no values have been added.

      Overrides:
        `getPopulationVariance` in class `SummaryStatistics`
      Returns:
        the population variance

    - #### getMax

          public double getMax()

      Returns the maximum of the values that have been added.

      Double.NaN is returned if no values have been added.

      Specified by:
        `getMax` in interface `StatisticalSummary`
      Overrides:
        `getMax` in class `SummaryStatistics`
      Returns:
        the maximum

    - #### getMin

          public double getMin()

      Returns the minimum of the values that have been added.

      Double.NaN is returned if no values have been added.

      Specified by:
        `getMin` in interface `StatisticalSummary`
      Overrides:
        `getMin` in class `SummaryStatistics`
      Returns:
        the minimum

    - #### getGeometricMean

          public double getGeometricMean()

      Returns the geometric mean of the values that have been added.

      Double.NaN is returned if no values have been added.

      Overrides:
        `getGeometricMean` in class `SummaryStatistics`
      Returns:
        the geometric mean

    - #### toString

          public String toString()

      Generates a text report displaying summary statistics from values that have been added.
      Overrides:
        `toString` in class `SummaryStatistics`
      Returns:
        String with line feeds displaying statistics

    - #### clear

          public void clear()

      Resets all statistics and storage
      Overrides:
        `clear` in class `SummaryStatistics`

    - #### equals

          public boolean equals(Object object)

      Returns true iff `object` is a `SummaryStatistics` instance and all statistics have the same values as this.
      Overrides:
        `equals` in class `SummaryStatistics`
      Parameters:
        `object` - the object to test equality against.
      Returns:
        true if object equals this

    - #### hashCode

          public int hashCode()

      Returns hash code based on values of statistics
      Overrides:
        `hashCode` in class `SummaryStatistics`
      Returns:
        hash code

    - #### getSumImpl

          public StorelessUnivariateStatistic getSumImpl()

      Returns the currently configured Sum implementation
      Overrides:
        `getSumImpl` in class `SummaryStatistics`
      Returns:
        the StorelessUnivariateStatistic implementing the sum

    - #### setSumImpl

          public void setSumImpl(StorelessUnivariateStatistic sumImpl)
                          throws MathIllegalStateException

      Sets the implementation for the Sum.

      This method must be activated before any data has been added - i.e., before `addValue` has been used to add data; otherwise an IllegalStateException will be thrown.

      Overrides:
        `setSumImpl` in class `SummaryStatistics`
      Parameters:
        `sumImpl` - the StorelessUnivariateStatistic instance to use for computing the Sum
      Throws:
        `MathIllegalStateException` - if data has already been added (i.e if n >0)

    - #### getSumsqImpl

          public StorelessUnivariateStatistic getSumsqImpl()

      Returns the currently configured sum of squares implementation
      Overrides:
        `getSumsqImpl` in class `SummaryStatistics`
      Returns:
        the StorelessUnivariateStatistic implementing the sum of squares

    - #### setSumsqImpl

          public void setSumsqImpl(StorelessUnivariateStatistic sumsqImpl)
                            throws MathIllegalStateException

      Sets the implementation for the sum of squares.

      This method must be activated before any data has been added - i.e., before `addValue` has been used to add data; otherwise an IllegalStateException will be thrown.

      Overrides:
        `setSumsqImpl` in class `SummaryStatistics`
      Parameters:
        `sumsqImpl` - the StorelessUnivariateStatistic instance to use for computing the sum of squares
      Throws:
        `MathIllegalStateException` - if data has already been added (i.e if n > 0)

    - #### getMinImpl

          public StorelessUnivariateStatistic getMinImpl()

      Returns the currently configured minimum implementation
      Overrides:
        `getMinImpl` in class `SummaryStatistics`
      Returns:
        the StorelessUnivariateStatistic implementing the minimum

    - #### setMinImpl

          public void setMinImpl(StorelessUnivariateStatistic minImpl)
                          throws MathIllegalStateException

      Sets the implementation for the minimum.

      This method must be activated before any data has been added - i.e., before `addValue` has been used to add data; otherwise an IllegalStateException will be thrown.

      Overrides:
        `setMinImpl` in class `SummaryStatistics`
      Parameters:
        `minImpl` - the StorelessUnivariateStatistic instance to use for computing the minimum
      Throws:
        `MathIllegalStateException` - if data has already been added (i.e if n > 0)

    - #### getMaxImpl

          public StorelessUnivariateStatistic getMaxImpl()

      Returns the currently configured maximum implementation
      Overrides:
        `getMaxImpl` in class `SummaryStatistics`
      Returns:
        the StorelessUnivariateStatistic implementing the maximum

    - #### setMaxImpl

          public void setMaxImpl(StorelessUnivariateStatistic maxImpl)
                          throws MathIllegalStateException

      Sets the implementation for the maximum.

      This method must be activated before any data has been added - i.e., before `addValue` has been used to add data; otherwise an IllegalStateException will be thrown.

      Overrides:
        `setMaxImpl` in class `SummaryStatistics`
      Parameters:
        `maxImpl` - the StorelessUnivariateStatistic instance to use for computing the maximum
      Throws:
        `MathIllegalStateException` - if data has already been added (i.e if n > 0)

    - #### getSumLogImpl

          public StorelessUnivariateStatistic getSumLogImpl()

      Returns the currently configured sum of logs implementation
      Overrides:
        `getSumLogImpl` in class `SummaryStatistics`
      Returns:
        the StorelessUnivariateStatistic implementing the log sum

    - #### setSumLogImpl

          public void setSumLogImpl(StorelessUnivariateStatistic sumLogImpl)
                             throws MathIllegalStateException

      Sets the implementation for the sum of logs.

      This method must be activated before any data has been added - i.e., before `addValue` has been used to add data; otherwise an IllegalStateException will be thrown.

      Overrides:
        `setSumLogImpl` in class `SummaryStatistics`
      Parameters:
        `sumLogImpl` - the StorelessUnivariateStatistic instance to use for computing the log sum
      Throws:
        `MathIllegalStateException` - if data has already been added (i.e if n > 0)

    - #### getGeoMeanImpl

          public StorelessUnivariateStatistic getGeoMeanImpl()

      Returns the currently configured geometric mean implementation
      Overrides:
        `getGeoMeanImpl` in class `SummaryStatistics`
      Returns:
        the StorelessUnivariateStatistic implementing the geometric mean

    - #### setGeoMeanImpl

          public void setGeoMeanImpl(StorelessUnivariateStatistic geoMeanImpl)
                              throws MathIllegalStateException

      Sets the implementation for the geometric mean.

      This method must be activated before any data has been added - i.e., before `addValue` has been used to add data; otherwise an IllegalStateException will be thrown.

      Overrides:
        `setGeoMeanImpl` in class `SummaryStatistics`
      Parameters:
        `geoMeanImpl` - the StorelessUnivariateStatistic instance to use for computing the geometric mean
      Throws:
        `MathIllegalStateException` - if data has already been added (i.e if n > 0)

    - #### getMeanImpl

          public StorelessUnivariateStatistic getMeanImpl()

      Returns the currently configured mean implementation
      Overrides:
        `getMeanImpl` in class `SummaryStatistics`
      Returns:
        the StorelessUnivariateStatistic implementing the mean

    - #### setMeanImpl

          public void setMeanImpl(StorelessUnivariateStatistic meanImpl)
                           throws MathIllegalStateException

      Sets the implementation for the mean.

      This method must be activated before any data has been added - i.e., before `addValue` has been used to add data; otherwise an IllegalStateException will be thrown.

      Overrides:
        `setMeanImpl` in class `SummaryStatistics`
      Parameters:
        `meanImpl` - the StorelessUnivariateStatistic instance to use for computing the mean
      Throws:
        `MathIllegalStateException` - if data has already been added (i.e if n > 0)

    - #### getVarianceImpl

          public StorelessUnivariateStatistic getVarianceImpl()

      Returns the currently configured variance implementation
      Overrides:
        `getVarianceImpl` in class `SummaryStatistics`
      Returns:
        the StorelessUnivariateStatistic implementing the variance

    - #### setVarianceImpl

          public void setVarianceImpl(StorelessUnivariateStatistic varianceImpl)
                               throws MathIllegalStateException

      Sets the implementation for the variance.

      This method must be activated before any data has been added - i.e., before `addValue` has been used to add data; otherwise an IllegalStateException will be thrown.

      Overrides:
        `setVarianceImpl` in class `SummaryStatistics`
      Parameters:
        `varianceImpl` - the StorelessUnivariateStatistic instance to use for computing the variance
      Throws:
        `MathIllegalStateException` - if data has already been added (i.e if n > 0)

    - #### copy

          public SynchronizedSummaryStatistics copy()

      Returns a copy of this SynchronizedSummaryStatistics instance with the same internal state.
      Overrides:
        `copy` in class `SummaryStatistics`
      Returns:
        a copy of this

    - #### copy

          public static void copy(SynchronizedSummaryStatistics source,
                  SynchronizedSummaryStatistics dest)
                           throws NullArgumentException

      Copies source to dest.

      Neither source nor dest can be null.

      Acquires synchronization lock on source, then dest before copying.

      Parameters:
        `source` - SynchronizedSummaryStatistics to copy
        `dest` - SynchronizedSummaryStatistics to copy to
      Throws:
        `NullArgumentException` - if either source or dest is null

Copyright (c) 2003-2013 Apache Software Foundation