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
`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
`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