# Class StatCalculator<T extends Number & Comparable<? super T>>

java.lang.Object
org.apache.jorphan.math.StatCalculator<T>

Type Parameters:
  `T` - type parameter for the calculator

Direct Known Subclasses:
  `StatCalculatorInteger, StatCalculatorLong`

public abstract class StatCalculator<T extends Number & Comparable<? super T>> extends Object
This class serves as a way to calculate the median, max, min etc. of a list of values. It is not threadsafe.

## Constructor Summary

Constructors
Constructor
Description
`StatCalculator(T zero, T min, T max)`
This constructor is used to set up particular values for the generic class instance.

## Method Summary

Modifier and Type
Method
Description
`void`
`addAll(StatCalculator<T> calc)`
`void`
`addBytes(long newValue)`
`void`
`addValue(T val)`
Add a single value (normally elapsed time)
`void`
`addValue(T val, long sampleCount)`
Update the calculator with the value for an aggregated sample.
`void`
`clear()`
`protected abstract T`
`divide(T val, int n)`
`protected abstract T`
`divide(T val, long n)`
`long`
`getCount()`
`Map<Number,Number[]>`
`getDistribution()`
Returns the distribution of the values in the list.
`T`
`getMax()`
`double`
`getMean()`
`T`
`getMedian()`
`T`
`getMin()`
`T`
`getPercentPoint(double percent)`
Get the value which %percent% of the values are less than.
`T`
`getPercentPoint(float percent)`
Get the value which %percent% of the values are less than.
`double`
`getStandardDeviation()`
`double`
`getSum()`
`long`
`getTotalBytes()`

### Methods inherited from class Object

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

## Constructor Details

### StatCalculator

public StatCalculator(T zero, T min, T max)
This constructor is used to set up particular values for the generic class instance.

Parameters:
  `zero` - - value to return for Median and PercentPoint if there are no values
  `min` - - value to return for minimum if there are no values
  `max` - - value to return for maximum if there are no values

## Method Details

### clear

public void clear()

### addBytes

public void addBytes(long newValue)

### addAll

public void addAll(StatCalculator<T> calc)

### getMedian

public T getMedian()

### getTotalBytes

public long getTotalBytes()

### getPercentPoint

public T getPercentPoint(float percent)
Get the value which %percent% of the values are less than. This works just like median (where median represents the 50% point). A typical desire is to see the 90% point - the value that 90% of the data points are below, the remaining 10% are above.

Parameters:
  `percent` - number representing the wished percent (between `0` and `1.0`)
Returns:
  number of values less than the percentage

### getPercentPoint

public T getPercentPoint(double percent)
Get the value which %percent% of the values are less than. This works just like median (where median represents the 50% point). A typical desire is to see the 90% point - the value that 90% of the data points are below, the remaining 10% are above.

Parameters:
  `percent` - number representing the wished percent (between `0` and `1.0`)
Returns:
  the value which %percent% of the values are less than

### getDistribution

public Map<Number,Number[]> getDistribution()
Returns the distribution of the values in the list.

Returns:
  map containing either Integer or Long keys; entries are a Number array containing the key and the [Integer] count. TODO - why is the key value also stored in the entry array? See Bug 53825

### getMean

public double getMean()

### getStandardDeviation

public double getStandardDeviation()

### getMin

public T getMin()

### getMax

public T getMax()

### getCount

public long getCount()

### getSum

public double getSum()

### divide

protected abstract T divide(T val, int n)

### divide

protected abstract T divide(T val, long n)

### addValue

public void addValue(T val, long sampleCount)
Update the calculator with the value for an aggregated sample.

Parameters:
  `val` - the aggregate value, normally the elapsed time
  `sampleCount` - the number of samples contributing to the aggregate value

### addValue

public void addValue(T val)
Add a single value (normally elapsed time)

Parameters:
  `val` - the value to add, which should correspond with a single sample
See Also:
  - `addValue(Number, long)`