java-array-sum-average
Find Sum and Average in a Java Array
1. Introduction
2. Find Sum of Array Elements
In order to find the sum of all elements in an array, we can simply iterate the array and add each element to a sum accumulating __ variable.
This very simply starts with a sum of 0 and add each item in the array as we go:
public static int findSumWithoutUsingStream(int[] array) {
int sum = 0;
for (int value : array) {
sum += value;
}
return sum;
}
2.2. Sum With the Java Stream API
public static int findSumUsingStream(int[] array) {
return Arrays.stream(array).sum();
}
It’s important to know that the sum() method only supports primitive type streams.
If we want to use a stream on a boxed Integer value, we must first convert the stream into IntStream using the mapToInt method.
After that, we can apply the sum() method to our newly converted IntStream:
public static int findSumUsingStream(Integer[] array) {
return Arrays.stream(array)
.mapToInt(Integer::intValue)
.sum();
}
You can read a lot more about the Stream API here.
3. Find Average in a Java Array
Once we know how to calculate the sum of array elements, finding average is pretty easy – as Average = Sum of Elements / Number of Elements:
public static double findAverageWithoutUsingStream(int[] array) {
int sum = findSumWithoutUsingStream(array);
return (double) sum / array.length;
}
Notes:
-
Dividing an int by another int returns an int result. To get an accurate average, we first cast sum to double.
-
Java Array has a length field which stores the number of elements in the array.
3.2. Average Using the Java Stream API
public static double findAverageUsingStream(int[] array) { return Arrays.stream(array).average().orElse(Double.NaN); }
IntStream.average() returns an OptionalDouble which may not contain a value and which needs a special handling.
Read more about Optionals in this article and about the OptionalDouble class in the Java 8 Documentation.
4. Conclusion
As always, the code is available over on Github.