Единственная альтернатива использованию цикла - использовать рекурсию.
Вы можете определить такой метод, как
public static int sum(List<Integer> ints) {
return ints.isEmpty() ? 0 : ints.get(0) + ints.subList(1, ints.length());
}
Это очень неэффективно по сравнению с использованием простого цикла и может взорваться, если у вас много элементов в списке.
Альтернативой, позволяющей избежать переполнения стека, является использование.
public static int sum(List<Integer> ints) {
int len = ints.size();
if (len == 0) return 0;
if (len == 1) return ints.get(0);
return sum(ints.subList(0, len/2)) + sum(ints.subList(len/2, len));
}
Это так же неэффективно, но позволит избежать переполнения стека.
Самый короткий способ написать то же самое -
int sum = 0, a[] = {2, 4, 6, 8};
for(int i: a) {
sum += i;
}
System.out.println("sum(a) = " + sum);
печатает
sum(a) = 20
ArrayListнет чего-то «суммируемого»? ArrayList и массив - это не обязательно одно и то же. Что касается суммирования чисел в массиве, это очень простой цикл for по элементам и вычисление кумулятивной суммы.