La seule alternative à l'utilisation d'une boucle est d'utiliser la récursivité.
Vous pouvez définir une méthode comme
public static int sum(List<Integer> ints) {
return ints.isEmpty() ? 0 : ints.get(0) + ints.subList(1, ints.length());
}
Ceci est très inefficace par rapport à l'utilisation d'une boucle simple et peut exploser si vous avez de nombreux éléments dans la liste.
Une alternative qui évite un débordement de pile est d'utiliser.
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));
}
C'est tout aussi inefficace, mais cela évitera un débordement de pile.
Le moyen le plus court d'écrire la même chose est
int sum = 0, a[] = {2, 4, 6, 8};
for(int i: a) {
sum += i;
}
System.out.println("sum(a) = " + sum);
impressions
sum(a) = 20
ArrayListne contient pas quelque chose de "sommable"? ArrayList et un tableau ne sont pas nécessairement la même chose. En ce qui concerne la somme des nombres dans un tableau, c'est une boucle for très simple sur les éléments et le calcul d'une somme cumulative.