A única alternativa para usar um loop é usar recursão.
Você pode definir um método como
public static int sum(List<Integer> ints) {
return ints.isEmpty() ? 0 : ints.get(0) + ints.subList(1, ints.length());
}
Isso é muito ineficiente em comparação com o uso de um loop simples e pode explodir se você tiver muitos elementos na lista.
Uma alternativa que evita um estouro de pilha é usar.
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));
}
Isso é igualmente ineficiente, mas evitará um estouro de pilha.
A maneira mais curta de escrever a mesma coisa é
int sum = 0, a[] = {2, 4, 6, 8};
for(int i: a) {
sum += i;
}
System.out.println("sum(a) = " + sum);
estampas
sum(a) = 20
ArrayListnão contiver algo que seja "somatório"? ArrayList e um array não são necessariamente a mesma coisa. Quanto à soma dos números em uma matriz, é um loop for muito simples sobre os elementos e calcular uma soma cumulativa.