I have created an Integer list containing 10 numbers in java.I would like to get the sum of the numbers in the list.For that I have used four methods to iterate through the list and return the sum.The code for the same is given below.
public static void main(String[] args) {
List<Integer> numbers=Arrays.asList(1,5,10,25,30,17,3,9,11,26);
//Using simple for loop for finding sum of numbers in the list
System.out.println(sumOfNumbersUsingSimpleForLoop(numbers));
//Using listIterator interface for finding sum of numbers in the list
System.out.println(sumOfNumbersUsingIterableInterface(numbers));
//Using enhanced for loop for finding sum of numbers in the list
System.out.println(sumOfNumbersUsingEnhancedForLoop(numbers));
//Using lambda expression for finding sum of numbers in the list
System.out.println(sumOfNumbersUsingLambdaExpression(numbers));
}
public static int sumOfNumbersUsingSimpleForLoop(List<Integer> numbers)
{
int sum=0;
for(int i=0;i<numbers.size();i++)
{
sum=sum+numbers.get(i);
}
return sum;
}
public static int sumOfNumbersUsingIterableInterface(List<Integer> numbers)
{
int sum=0;
ListIterator<Integer> iterator=numbers.listIterator();
while(iterator.hasNext())
{
sum=sum+iterator.next();
}
return sum;
}
public static int sumOfNumbersUsingEnhancedForLoop(List<Integer> numbers)
{
int sum=0;
for(int number:numbers)
{
sum=sum+number;
}
return sum;
}
public static int sumOfNumbersUsingLambdaExpression(List<Integer> numbers)
{
return numbers.stream().parallel().reduce(0, (e,num)->e+num);
}
All of these methods return 137 as the result.For me using lambda expression for evaluating the sum is found to be convenient.However I am not sure about its performance if the size of the list grows high.It will be very useful if someone can illustrate a performance comparison of all the methods.