Similar to finding the average of an arraylist or collection, this example will use java, java 8, guava and apache commons to demonstrate how to find the average or the arithmetic mean of a numeric array of a primitive type.

## Setup

## Straight up Java

Using an imperative programming style, we will iterate over the numbers array using a for each loop. Each iteration will add to the total and then divide by the array length, thus finding the average.

## Java 8

In java 8, the JDK provides a series of reduction operations which provides an internal implementation. Unlike the example above, this abstraction enables a cleaner, more maintainable, and eloquent of way of handling finding the average of the array. If you choose, stream.parallel will enable the internal implementation to choose to perform the reduce operation in parallel. Looking for more than just the average, DoubleSummaryStatistics is a class that calculates all statistics such as average, count, min max and sum.

## Google Guava

Guava provides a class for arithmetic on doubles that is not covered by java.lang.Math.

## Apache Commons

Apache commons Mean class will computes the arithmetic mean of a set of double values.

## ReactiveX - RXJava

Using the `Observable.from`

method will convert the `List`

to an `Observable`

so it will emit the items to the sequence. Next, the `averageInteger`

part of Mathematical and Aggregate Operators will compute the average of sequence returning a single item.