L'unica alternativa all'uso di un ciclo è usare la ricorsione.
Puoi definire un metodo come
public static int sum(List<Integer> ints) {
return ints.isEmpty() ? 0 : ints.get(0) + ints.subList(1, ints.length());
}
Questo è molto inefficiente rispetto all'utilizzo di un semplice loop e può saltare in aria se si hanno molti elementi nell'elenco.
Un'alternativa che evita un overflow dello stack è usare.
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));
}
Questo è altrettanto inefficiente, ma eviterà un overflow dello stack.
Il modo più breve per scrivere la stessa cosa è
int sum = 0, a[] = {2, 4, 6, 8};
for(int i: a) {
sum += i;
}
System.out.println("sum(a) = " + sum);
stampe
sum(a) = 20
ArrayListnon contiene qualcosa che è "sommabile"? ArrayList e un array non sono necessariamente la stessa cosa. Per quanto riguarda la somma dei numeri in un array, è un ciclo for molto semplice sugli elementi e il calcolo di una somma cumulativa.