//GetMaxMinSumAverage.java

import java.util.Arrays;
import java.util.IntSummaryStatistics;
import java.util.List;

public class GetMaxMinSumAverage
{
    public static void main(String args[])
    {
        //We will find the maximum, minimum, sum and average of
        //a list of integers.
        List<Integer> integers
            = Arrays.asList(2, 1, 13, 4, 15, 6, 19, 17, 8);
        System.out.println("\nList of integers: " + integers);

        System.out.println("\n=============");
        System.out.println("Using Java 7: ");
        int max = integers.get(0);
        int min = integers.get(0);
        int sum = integers.get(0); //Note this initialization!
        for (int i = 1; i < integers.size(); i++)
        {
            Integer integer = integers.get(i);
            if (integer.intValue() > max)
            {
                max = integer.intValue();
            }
            if (integer.intValue() < min)
            {
                min = integer.intValue();
            }
            sum += integer;
        }
        double average = (double) sum / integers.size();
        System.out.println("Highest number in List: " + max);
        System.out.println("Lowest number in List:  " + min);
        System.out.println("Sum of all numbers:     " + sum);
        System.out.println("Average of all numbers: " + average);

        System.out.println("\n=============");
        System.out.println("Using Java 8: ");
        IntSummaryStatistics stats = integers
                                     .stream()
                                     .mapToInt(x -> x) //That is, from Integer to int
                                     .summaryStatistics();
        System.out.println("Highest number in List: " + stats.getMax());
        System.out.println("Lowest number in List:  " + stats.getMin());
        System.out.println("Sum of all numbers:     " + stats.getSum());
        System.out.println("Average of all numbers: " + stats.getAverage());
    }
}
/*  Output:

    List of integers: [2, 1, 13, 4, 15, 6, 19, 17, 8]

    =============
    Using Java 7:
    Highest number in List: 19
    Lowest number in List:  1
    Sum of all numbers:     85
    Average of all numbers: 9.444444444444445

    =============
    Using Java 8:
    Highest number in List: 19
    Lowest number in List:  1
    Sum of all numbers:     85
    Average of all numbers: 9.444444444444445
*/

