Die einzige Alternative zur Verwendung einer Schleife ist die Verwendung der Rekursion.
Sie können eine Methode wie definieren
public static int sum(List<Integer> ints) {
return ints.isEmpty() ? 0 : ints.get(0) + ints.subList(1, ints.length());
}
Dies ist im Vergleich zur Verwendung einer einfachen Schleife sehr ineffizient und kann explodieren, wenn Sie viele Elemente in der Liste haben.
Eine Alternative, die einen Stapelüberlauf vermeidet, ist die Verwendung.
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));
}
Dies ist ebenso ineffizient, vermeidet jedoch einen Stapelüberlauf.
Der kürzeste Weg, dasselbe zu schreiben, ist
int sum = 0, a[] = {2, 4, 6, 8};
for(int i: a) {
sum += i;
}
System.out.println("sum(a) = " + sum);
druckt
sum(a) = 20
ArrayListnicht etwas enthält, das "summierbar" ist? ArrayList und ein Array sind nicht unbedingt dasselbe. Das Summieren von Zahlen in einem Array ist eine sehr einfache Schleife über die Elemente und das Berechnen einer kumulativen Summe.